设计模式--------代理模式
介绍代理模式的三大问题
- 什么是代理模式?
- 代理模式有什么好处?
- 常见的代理模式,以及应用场景
什么是代理模式?
- 代理模式:为另一个对象提供一个代表对象,以便控制客户对对象的访问(有多种管理方式)
- 常见的使用场景
- 远程代理:管理客户和远程对象的交互
- 虚拟代理:控制访问实例化开销大的对象
- 保护代理:管理调用者对对象方法的访问
- 缓存代理,同步代理,防火墙代理等
- 代理模式和装饰模式的不同之处:
- 装饰模式是为对象增加新的行为
- 代理模式是为了控制访问
- java内置的代理可以实现动态代理
采用一个例子说明代理模式
- 代购买衣服,国内此品牌的衣服价格太贵,顾客联系代购商订购衣服,并支付代购费用
Clothes
public interface Clothes {
public void getPrice();
public void buy();
}
Gucci
public class Gucci implements Clothes {
@Override
public void getPrice() {
System.out.println("Price is 10000");
}
@Override
public void buy() {
System.out.println("buy it");
}
}
GucciProxy
public class GucciProxy implements Clothes {
Clothes clothes;
public GucciProxy(Clothes clothes) {
this.clothes = clothes;
}
@Override
public void getPrice() {
clothes.getPrice();
}
@Override
public void buy() {
clothes.buy();
}
}
Main
public class Main {
public static void main(String[] args) throws Exception {
Clothes clothes = new Gucci();
Clothes proxy = new GucciProxy(clothes);
proxy.getPrice();
proxy.buy();
}
}
/// out
Price is 10000
buy it
代理模式的好处?
- 降低调用者和被调用者的耦合性
- 根据不同的需求使用不同的代理模式有不同的优点
END
不慕招式,勤修内功