代理模式:代理模式和装饰器模式结构很像,装饰器模式关注于在一个对象上动态的添加方法,然而代理模式关注于控制对对象的访问。换句话说,用代理模式,代理类(proxy class)可以对它的客户隐藏一个对象的具体信息。因此,当使用代理模式的时候,我们常常在一个代理类中创建一个对象的实例。但当我们使用装饰器模式的时候,我们通常的做法是将原始对象作为一个参数传给装饰者的构造器
重点:代理模式重在于对方法的控制,添加行为对于用户是被动的;装饰模式重在于装饰方法,增加方法的功能,添加装饰对于用户是主动的(代理模式对象类中创建,装饰模式对象是客户端传进来)
/**
* 代理模式:
* 关键:
* Subject接口 (代理着和真实者 有共同的接口)
* RealSubject类 :实现了Subject接口
* Proxy类:拥有RealSubject的引用,并调用其接口中的方法
* @author zbl
*
*/
public class ProxyCustomer {
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.request();
}
}
interface Subject{
public void request();
}
class RealSubject implements Subject{
@Override
public void request() {
System.out.println("xixi");
}
}
class Proxy implements Subject{
private RealSubject realSubject;
@Override
public void request() {
if(realSubject==null)
realSubject = new RealSubject();
realSubject.request();
}
}