您的位置:首页 > 其它

设计模式之代理模式

2017-05-17 11:56 141 查看
模式定义:

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

模式结构:
代码模式.png

不画图了,就是 一个接口,两个实现A,B。A是代理证,B是真正实现,,A内有一个B的引用。在调用A时,其实是调用B。和适配器模式差不多,只不过这个父类相同。

模式实现:
public class ProxyPattern {

@Test
public void testProxy() {
Proxy proxy = new Proxy();
proxy.sell("lv");
proxy.sell("gun");
proxy.sell("iPhone8");
}

/**
* 商家接口
*/
interface ISeller {
void sell(String name);
}

/**
* 香港某个商城
*/
class HongKong implements ISeller {

@Override
public void sell(String name) {
System.out.println("sell " + name);
}
}

/**
* 代购
*/
class Proxy implements ISeller {

private ISeller iSeller;

public Proxy() {
iSeller = new HongKong();
}

@Override
public void sell(String name) {
if ("iPhone8".equals(name)) {
System.out.println("no this");
} else if ("gun".equals(name)) {
System.out.println("no permission");
} else {
iSeller.sell(name);
}
}
}

}


模式优点:

1、代理模式能够协调调用者和被调用者,在一定程度上降低了系统的耦合度
2、代理对象可以在客户端和目标对象之间起到中介的作用,起到了保护目标对象的作用

模式缺点:

1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢
2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂

适用场景:

1、远程代理:为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实
2、虚拟代理:通过使用过一个小的对象代理一个大对象。这样就可以减少系统的开销
3、保护代理:用来控制对真实对象的访问权限
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: