Java設計模式之二代理模式

代理模式是指給某一個對象提供一個代理對象,并由代理對象控制對原對象的引用(接口的引用)的結構模式。它的核心思想在于限制直接訪問對象,而是通過代理對象訪問目標對象,這樣做的好處在于保護了目標對象,即使目標對象發(fā)生變化,也不會影響到訪問者,因為訪問者拿到的始終都是代理對象,這保證了目標對象的擴展性。另外,代理對象還可以起到攔截代理方法,改變原方法的參數和返回值以滿足代理自身的需求。

代理模式的角色分配:

目標對象:真正做事的人
代理對象:持有目標對象,具有和目標對象相同的做事能力
訪問者:需要人做事的人

以下是示例:

經理跟助理說,找人把某件事做了,這里面的經理就是訪問者,助理就是代理對象,助理找來做事的人就是目標對象。這里面,經理實際操作的是助理,而不是助理找的人,經理不直接操作助理找的人。代碼實現:

首先定義一個接口,助理和目標對象所具有的共同的做事能力:

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();
}
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容