JAVA設計模式——代理模式

來源:互聯網
上載者:User

標籤:設計模式   代理   模式   

本人之前學的java web,後來轉的android方向,發現寫android的人都是天才,其中很多也應用到了java設計模式,說起java設計模式,大家都能說出幾個,比如android中application(單例模式)、眾多的監聽器(觀察者模式),眾多的適配器adapter(適配器模式)、處理映像的原廠模式……等等,可是大家有沒有自己去實現乃至去用這些良好的設計模式來設計自己的代碼呢?很多答案是否定的。但是仔細一想,只有遵循“只有寫出來才是自己的”的口號,所以今天就來一步一步來寫了……學習我快樂!
今天我實現的是代理模式:
首先我寫了一個介面類:

public interface Sourceable {      public void method();  }  

下面寫一個實現這個介面的類:
public class Source implements Sourceable {

@Override  public void method() {      System.out.println("the original method!");  }  

}
然後我寫了一個代理類:
public class Proxy implements Sourceable {

private Source source;  public Proxy(){      super();      this.source = new Source();  }  @Override  public void method() {      before();      source.method();      atfer();  }  private void atfer() {      System.out.println("after proxy!");  }  private void before() {      System.out.println("before proxy!");  }  

}
接下來我們就可以測試了:
public class ProxyTest {

public static void main(String[] args) {      Sourceable source = new Proxy();      source.method();  }  

}
測試結果:
before proxy!
the original method!
after proxy!
大家仔細看代碼,原類中的method()方法中執行的動作在Proxy類中method()方法中被執行了。想必大家到這已經很明白了。個人感覺有點介面回調的意思。

可能你就問了,這代理模式有什麼用呢?android中有沒有用到代理模式呢?答案是肯定的,大家記得進程中通訊吧,Activity和service間的通訊,很多教科書上說Activity和service間跨進程通訊,他媽的其實就是瞎說,如果不做任何處理,Service和Activity本在同一進程中,如果service要單獨開一進程,需要在配置service的時候加上android:process:romote。這時候就是跨進程通訊了,這是一些題外話,如果做到跨進程通訊,大家肯定想到的是aidl,aidl其實就是代理模式,大家可以根據上述所寫思考一下吧。不免囉嗦一下,下面一段是網上的部落格原話。

代理模式的應用情境:
如果已有的方法在使用的時候需要對原有的方法進行改進,此時有兩種辦法:
1、修改原有的方法來適應。這樣違反了“對擴充開放,對修改關閉”的原則。
2、就是採用一個代理類調用原有的方法,且對產生的結果進行控制。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

JAVA設計模式——代理模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.