您的位置:首页 > 其它

《设计模式 系列》- 结构型模式 - 代理模式

2018-01-04 00:00 302 查看

模板定义

给对象提供一个代理,并由代理对象控制对原对象的引用

模板结构

Subject:抽象角色。代理角色、真实角色的公共父接口。

ProxySubject:代理角色。依赖与真实角色

RealSubject:真实角色。我们要扩展功能的类

UML图



代码实现

Subject.java

public interface Subject {
void request();
}

RealSubject.java

public class RealSubject implements Subject {

@Override
public void request() {
System.out.println("RealSubject do SomeThing");
}
}

ProxySubject.java

public class ProxySubject implements Subject {

private RealSubject realSubject = new RealSubject();

@Override
public void request() {
System.out.println("Before request");
realSubject.request();
System.out.println("After request");
}
}

Client.java

public class Client {

public static void main(String[] args) {
Subject subject = new ProxySubject();
subject.request();
}
}


模式优点

协调调用者和被调用者,在一定程度上降低系统的耦合度。

远程代理使得客户端可以访问在远程机器上的对象。

保护代理可以控制对真实对象的使用权限

模式缺点

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

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

参考资料

http://hjxandhmr.github.io/2016/06/06/DesignPattern-Proxy/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式