代理模式

代理模式:
         爲其它對象提供一種代理,以控制對該對象的訪問。代理在客戶與訪問對象之間起到一種中介的做用。還能夠經過代理添加一些額外的功能。
優勢:
        1) 客戶只要經過代理就能夠訪問目標對象,代理能夠專一於爲目標對象服務。
        2)若是目標方法須要對結果作進一步的處理,只須要對代理中的服務方法進行改進便可,這樣符合軟件設計中的「開關原則」,對修改關閉,對擴展開放。
        3)能夠協調調用者與被調用者,在必定程序上實現了鬆散耦合。   
缺點:
       若是目標對象有多個,則對應的代理就會有多個,這樣會使代碼冗餘,能夠考慮動態代理。

代碼實現:
     //抽象主題接口
     interface Subject
     {
        request();
     }
     //真實主題類
     public class RealSubject implements Subject
     {
   public void request()
  {
    System.out.println( "this is RealSubject,requesting...");
  }
     }
     //代理主題類
     public class ProxySubject implements Subject
     {
   private RealSubject realSubject; //保存真實主題的引用
   public ProxySubject()
  {

  }
   public ProxySubject(RealSubject realSubject)
  {
     this.realSubject = realSubject;
  }

   public void request()
  {
    preRequest();

     if(realSubject == null)
    {
      realSubject = new RealSubject();
    }

    realSubject.request();

    postRequest();
  
  }
   private void preRequest()
  {
     // do sth before    request();
  
  }
   private void postRequest()
  {
     // do sth after request();
  
  }
    
     }
     //客戶端
     public class Test
     {
   public static void    main(String args[])
  {
    Subject subject = new ProxySubject();     subject.request();   }           }
   
相關文章
相關標籤/搜索