Java设计模式<代理模式>
意图
- 限制对象的访问控制
- 客户端无需知道代理的对象
和装饰模式的共同点
- 都能对现有的类进行的动态的扩展功能
和装饰模式的共区别
- 装饰模式注重增加已有类的功能,客户端知道被装饰的对象
- 代理模式注重限制对象的访问,客户端无需知道被装饰的对象
场景
VPN代理访问网站
代码
定义访问接口
public interface VisitWeb {
public void visit();
}
北京站点
public class BJVisit implements VisitWeb{
public void visit() {
System.out.println("Beijing visit the web");
}
}
代理
public class ProxyVPN implements VisitWeb {
private VisitWeb visitWeb;
public ProxyVPN() {
this.visitWeb = new BJVisit();
}
public void visit() {
visitWeb.visit();
}
}
测试类
public class DemoMain {
public static void main(String[] args) {
VisitWeb visitWeb = new ProxyVPN();
visitWeb.visit();
}
}
输出
Beijing visit the web
注意DemoMain 并不知道代理了BJVisit
网友评论