代理模式(Proxy pattern)

来源:互联网 发布:全国十大域名提供商 编辑:程序博客网 时间:2024/06/14 04:10

代理模式(Proxy pattern)属于结构型模式。

客户端执行一个类的方法是通过另一个类实现的,其中第一个类叫做被代理的类,第二个叫代理类。

具体实现:

1、定义一个接口或一个抽象类,作为代理类和被代理类的父类。

2、被代理类和代理类实现这个接口

3、代理类中包含一个被代理类的引用,并实现接口中的方法。

4、代理类可以增加自己的功能(但是这并不影响被代理的类)。

以租房子为例,客户通过中介租房东的房子,其中,房东是被代理的类,中介是代理类,客户就是客户端。

代码实现:

java版:

Rent.java(代理类和被代理要实现的接口)

public interface Rent {void rent();}

Host.java(房东)

public class Host implements Rent{public void rent(){System.out.println("租房子");}}

Proxy.java(中介(代理))

public class Proxy implements Rent{ //实现Rent接口private Host host; //被代理类的引用public Proxy(Host host){this.host = host;}public void setHost(Host host) {this.host = host;}public void rent(){seeHouse();host.rent();fare();}private void seeHouse(){   //代理类增加的功能System.out.println("看房子");}private void fare(){   //代理类增加的功能System.out.println("收取中介费");}}
Client.java(客户端类)
public class Client {public static void main(String[] args) {Proxy proxy = new Proxy(new Host());proxy.rent();}}


代理模式的优点:

1、是被代理的类职责单一化,更清晰,体现了单一职原则。

2、是程序的扩展更容易。

3、更智能。

缺点:

       1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 

       2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。





0 0