<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      適配器模式是將一個(gè)類的接口變成客戶端所期待的另一種接口,從而使原本接口不匹配而無法在一起工作的兩個(gè)類能夠在一起工作,適配器模式也稱變壓器模式。

      ?

      適配器模式主要分為兩種:類適配器 和 對(duì)象適配器。

      ?

      類適配器是基于繼承,對(duì)象適配器是基于組合,我們推薦多用組合少用繼承。

      ?

      我們舉個(gè)例子:

      ?

      如下圖,現(xiàn)給手機(jī)充電,但墻上均為三腳插孔,而手機(jī)充電器為兩腳插頭,從而無法為手機(jī)充電,所以我們需要一個(gè)帶有三腳插頭的插線板,同時(shí)插線板上須有兩腳插孔。

      ?

      如此,手機(jī)-->手機(jī)充電器插頭-->插線板-->墻上的三腳插孔,完成手機(jī)充電。

      ?

      一個(gè)適配器模式主要有如下幾個(gè)要素:

      1、Source源角色(墻上的三腳插孔)

      2.、Adapter適配器角色(插線板)

      3.、Target目標(biāo)角色(手機(jī)充電器插頭)

      4、Client客戶端角色(手機(jī))

      ?

      下面我們來看一下如何用代碼描述這個(gè)適配器的過程:

      ?

      /**源對(duì)象 (墻上的三腳插孔)*/

      public class Source {

      ?? ?public void method() {
      ?? ??? ?System.out.println("我是墻上的三腳插孔,我只接受三腳插頭的");
      ?? ?}

      }

      /**適配器目標(biāo)接口(手機(jī)充電器插頭)*/

      public interface Target {

      ?? ?/**與源對(duì)象中的方法相同 */
      ?? ?public void method();
      }

      /**類適配器方式,通過繼承實(shí)現(xiàn)(插線板)*/

      public class Adapter extends Source implements Target {

      ?? ?public void method() {?
      ?? ??? ?//調(diào)用父類的方法
      ?? ??? ?super.method();
      ?? ?}
      }

      /**對(duì)象適配器方式,通過組合實(shí)現(xiàn)(插線板)*/
      public class Adapter2 implements Target {

      ?? ?/**對(duì)源對(duì)象的引用*/
      ?? ?private Source source;

      ?? ?public Adapter2 (Source source) {
      ?? ??? ?this.source = source;
      ?? ?}

      ?? ?@Override
      ?? ?public void method() {
      ?? ??? ?source.method();
      ?? ?}
      }

      /**客戶端(手機(jī))*/
      public class Client {

      ?? ?public static void main(String[] args) {
      ?? ??? ?//類適配器方式
      ?? ??? ?Target target = new Adapter();
      ?? ??? ?target.method();

      ?? ??? ?//對(duì)象適配器方式
      ?? ??? ?Source source = new Source();
      ?? ??? ?Target target2 = new Adapter2(source);
      ?? ??? ?target2.method();
      ?? ?}
      }


      以上就是一個(gè)適配器模式的典型代碼模板,在Java
      IO中,字節(jié)流InputStream轉(zhuǎn)換為字符流,中間即使用了適配器模式InputStreamReader,適配器模式可以讓兩個(gè)沒有關(guān)系的類在一起運(yùn)行。

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          激情五月深爱五月 | 国产一级a毛一级a看免费视奥美 | 91拍真实国产伦偷精品 | 深夜老司机福利 | 我与岳的肉体直接进去 | 日本黄色电影在线观看 | 男人天堂网最新 | 欧美激情插插插 | 国产精品国产三级国产普通话蜜臀 | 国产偷亚洲偷欧美偷精品 |