ホームページ  >  記事  >  Java  >  Javaのアダプタパターンに関するグラフィックコードの詳細説明

Javaのアダプタパターンに関するグラフィックコードの詳細説明

黄舟
黄舟オリジナル
2017-07-24 15:29:051772ブラウズ

この記事では主に Java アダプター モードを紹介します。これは非常に優れていると思いますので、参考にしてください。エディターをフォローして見てみましょう

1. コンセプト

アダプター モードは、あるインターフェイスを顧客が望む別のインターフェイスに変換します。これにより、インターフェイスに互換性がないために当初は連携できなかったクラスが連携できるようになります。

2. UML

3. より鮮明な例

4.分析

私は去年ノートを買いました。さらに、このノートブックにはロジクール G1 光学スリーブが装備されています。何が面倒かというと、光電ケースのマウスはUSBインターフェース、キーボードはPS2インターフェースなのですが、私のノートPCにはPS2インターフェースがありません。そこで、市場に行ってアダプターを購入しました。

そこで、いくつかのクラスを抽象化しました。

1.PS2Port (PS2インターフェース)。

2.USBPort (USBインターフェース)。

3.PS2ToUSB (オブジェクトアダプター)、PS2インターフェースをUSBインターフェースに置き換えます。

4.TestAdapter (テストクラス)、クライアント。

PS2ポート


package com.bjpowernode.adapter; 
 
/** 
 * PS2接口,圆口 
 * @author eason 
 * 
 */ 
public interface PS2Port { 
  public void workWithPS2(); 
}

USBポート


package com.bjpowernode.adapter; 
 
/** 
 * USB接口,U口 
 * @author eason 
 * 
 */ 
public interface USBPort { 
  public void workWithUSB(); 
}

PS2ToUSB


package com.bjpowernode.adapter; 
 
/** 
 * 对象适配器 
 * 将PS2接口装换成USB接口 
 * 所以此类类型是USB接口(implements USBPort) + 成员变量ps2Port 
 * @author eason 
 * 
 */ 
public class PS2ToUSB implements USBPort{ 
 
  private PS2Port ps2Port; 
   
  public PS2ToUSB(PS2Port ps2Port) { 
    this.ps2Port = ps2Port; 
  } 
   
  @Override 
  public void workWithUSB() { 
    System.out.println("转换的关键在这里,本来是"); 
    ps2Port.workWithPS2(); 
    System.out.println("经过你的转换,现在是USB工作中"); 
  } 
   
}

テストアダプター


package com.bjpowernode.adapter; 
 
/** 
 * 测试类 
 * client 
 * @author eason 
 * 
 */ 
public class TestAdapter { 
 
  public static void main(String[] args) { 
    //我现在有一个PS2接口 
    PS2Port ps2Port = new PS2Port() { 
      @Override 
      public void workWithPS2() { 
        System.out.println("PS2工作中"); 
      } 
    }; 
     
    //但是我需要的是一个USB接口啊,对我(client)来说,我只认识USB接口 
    //经过PS2ToUSB的转换,PS2接口变成了USB接口 
    USBPort ps2ToUsbPort = new PS2ToUSB(ps2Port); 
     
    ps2ToUsbPort.workWithUSB(); 
     
  } 
 
}

5. オブジェクトアダプターとクラスアダプター

上記のアダプターはオブジェクトアダプターです。クラスアダプターをもう一度見てみましょう。

PS2ToUSB、簡単なシミュレーションです。 Java では多重継承が許可されていないため、Java にはクラス パターン コードはなく、アイデアのみが存在します。


package com.bjpowernode.adapter; 
 
/** 
 * 类适配器 
 * @author eason 
 * 
 */ 
public class PS2ToUSB implements USBPort, PS2Port{ 
 
  //重写workWithUSB,把工作交给workWithPS2 
  @Override 
  public void workWithUSB() { 
    workWithPS2(); 
  } 
   
}

違いは、オブジェクトアダプターはクライアントが希望するインターフェース(USB)を実装し、内部で適応オブジェクト(PS2)への参照を持ち、組み合わせにより適応機能を実現することです。クラスアダプタは、クライアントが希望するインターフェース(USB)と適応オブジェクトインターフェース(PS2)を実装し、継承により適応機能を実現する。

6. 使用シナリオと使用経験

1. いくつかの既存のクラスを再利用したいと考えていますが、インターフェースが再利用環境の要件と一致しません。

2. 実際、初期の設計ではアダプター モードは少し役に立ちませんが、統合インターフェイスのリファクタリングを検討する必要があります。

7. アダプター パターンとデコレーター パターン

両方ともオブジェクトをラップするために使用できます。 本質的な違いは

1. アダプター パターン: 1 つのインターフェイスを別のインターフェイスに変換します。

2. デコレータ パターン: インターフェイスは変更せず、責任を追加するだけです。

以上がJavaのアダプタパターンに関するグラフィックコードの詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。