一.代理模式
什么是代理模式?就是我们不直接访问对象,我们创建被访问对象的访问层,即代理,通过代理类访问对象.
为什么不直接访问呢?好比你在国内访问国外网址,一般访问不了吧,这个时候你就的通过代理软件(fanqiang工具)去访问,代理软件在海外的服务器会给你解析你所需要的资源.
优点: 1、职责清晰。 2、高扩展性。 3、智能化。
缺点: 1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。 2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。
二.代码实现
//两个类实现同一接口
interface Subject{
public void dowork(String work);
}
//被代理的类
class RealSubject implements Subject{
String work;
@Override
public void dowork(String work) {
this.work = work;
System.out.println(work);
}
}
//代理类
class ProxySubject implements Subject{
private RealSubject realSubject;
public void dowork(String work) {
realSubject = new RealSubject();
realSubject.dowork(work);
System.out.println("翻墙");
}
public void doSomething(String work){
realSubject.dowork(work);
}
public void doNothing(String work){}
}
设计模式只是一种指导思想,你会发现其实这个模式和适配器模式,和装饰器模式有点像.在适配器和装饰器里面就运用到代理模式的技巧.
1、和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。
2、和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。