代理设计模式
假设有这样一种情景:
- l 张三借给李四5000000块钱
- l 李四不换了,张三很生气
- l 张三找到王五,王五是讨债公司的
- l 王五准备了老虎闸和辣椒水
- l 把李四欠张三的钱拿回来了
也就是说,张三委托王五找李四要钱,也就是说王五代理了张三。
代理设计是在Java中一种常用的设计模式,所谓代理设计就是指一个代理主题来操作真实主题,真实主题执行具体的业务操作,而代理主题负责其他业务的处理,就好比生活中使用的代理上网那样,客户通过网络代理连接网络,由代理服务器完成用户权限等操作。
不管是代理操作也好,真实的操作也好,其共同目的都是上网,至于里面是如何操作用户并不关心。
1 interface Network{ 2 public void browse(); //浏览上网 3 } 4 class Real implements Network{ //真是的网络 5 public void browse() { 6 System.out.println("上网浏览信息"); 7 } 8 } 9 class Proxy implements Network{ //代理服务器 10 private Network network; //代理对象 11 public Proxy(Network network) { 12 this.network = network; 13 } 14 public void check() { 15 System.out.println("检查用户是否合法"); 16 } 17 public void browse() { 18 this.check(); 19 this.network.browse(); //在代理服务器中调用真实的主题操作 20 } 21 } 22 public class TestProxy { 23 @Test 24 public void test() { 25 Network network = null; 26 network = new Proxy(new Real()); //指定代理操作 27 network.browse(); //客户只关心上网一个操作 28 } 29 } 30 //检查用户是否合法 31 //上网浏览信息