代理模式
代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
例如:我是黄晓明的经纪人,在一些情况下,小黄不想做或者不能直接做的事。我的工作就是代表小黄采取行动:订机票,联系媒体、主办方,贴身照顾等。
源码:
1 public interface 自然人 { 2 void 请求(); 3 }
1 public class 小黄 implements 自然人 { 2 public void 陪angelababy玩() { 3 System.out.println("陪Angelababy去大草原玩一天"); 4 } 5 public void 陪angelababy逛街() { 6 System.out.println("陪Angelababy去优衣库买衣服"); 7 } 8 @Override 9 public void 请求() { 10 System.out.println("请求gl大神,代理我的事情"); 11 } 12 }1 public class gl大神 implements 自然人{ 2 @Override 3 public void 请求() { 4 new 小黄().陪angelababy逛街(); 5 } 6 }1 public class Clienter { 2 public static void main(String[] args) { 3 自然人 ls = new 自然人(); 4 ls.请求(); 5 } 6 }输出:请求gl大神,代理我的事情
代理对象将客户端的调用委派给目标对象,在调用目标对象的方法之前跟之后都可以执行特定的操作。代理模式虽然实现了调用者与委托类之间的强耦合,但是却增加了代理类与委托类之间的强耦合(在代理类中显式调用委托类的方法),而且增加代理类之后明显会增加处理时间,拖慢处理时间。