代理模式:
为其他对象提供一种代理以控制对这个对象的访问。
java例子:
//接口
public interface BuySometing {
public void buy();
}
//实现类
public class BuyMilk implements BuySometing{
@Override
public void buy(){
System.out.println("买洋奶粉");
}
}
//代理类
public class ProxyBuy implements BuySometing{
private BuyMilk buy;
public ProxyBuy(){
super();
this.buy = new BuyMilk();
}
@Override
public void buy(){
this.before();
buy.buy();
this.after();
}
public void before(){
System.out.println("找洋奶粉店");
}
public void after(){
System.out.println("邮寄");
}
}
//测试类
public class ProxyTest {
public static void main(String[] args){
ProxyBuy pbuy = new ProxyBuy();
pbuy.buy();
}
}
//结果
找洋奶粉店
买洋奶粉
邮寄
装饰器和代理模式的区别:
- 装饰器类关注于在一个对象上动态的添加方法.
- 代理模式关注于控制对对象的访问,代理类通过代理模式向访问他的客户隐藏了真实调用的对象.