JAVA设计模式

Java设计模式之二代理模式

2019-06-26  本文已影响0人  095b62ead3cd

代理模式是指给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用(接口的引用)的结构模式。它的核心思想在于限制直接访问对象,而是通过代理对象访问目标对象,这样做的好处在于保护了目标对象,即使目标对象发生变化,也不会影响到访问者,因为访问者拿到的始终都是代理对象,这保证了目标对象的扩展性。另外,代理对象还可以起到拦截代理方法,改变原方法的参数和返回值以满足代理自身的需求

代理模式的角色分配:

目标对象:真正做事的人
代理对象:持有目标对象,具有和目标对象相同的做事能力
访问者:需要人做事的人

以下是示例:

经理跟助理说,找人把某件事做了,这里面的经理就是访问者,助理就是代理对象,助理找来做事的人就是目标对象。这里面,经理实际操作的是助理,而不是助理找的人,经理不直接操作助理找的人。代码实现:

首先定义一个接口,助理和目标对象所具有的共同的做事能力:

public interface DoSth{
      public void doSth(){
      }
}

定义目标对象,以及所具有的做事能力:

public class DesObj implements DoSth{
      public void doSth(){
      }
}

定义代理对象,持有目标对象,以及与目标对象相同的做事能力:

public class ProxyObj implements DoSth{
        DesObj desObj;
        public void doSth(DesObj desObj){
                this.desObj = desObj;
        }

         public void doSth(){
              this.desObj.doSth();
         }
}

定义访问者:

public class ManagerObj{
        DesObj desObj = new DesObj();
        ProxyObj obj = new ProxyObj();
        obj.doSth(desObj);
        obj.doSth();
}
上一篇下一篇

猜你喜欢

热点阅读