アダプターモード
クラスのインターフェースを、顧客が望む別のインターフェースに変換します。アダプターパターンを使用すると、インターフェイスに互換性がないために連携できないクラスを連携させることができます。
アダプターモードでは、新しいアダプタークラスを追加することでインターフェイスの非互換性の問題を解決し、関係のないクラスが連携できるようにします。
役割
ターゲット(ターゲット抽象クラス)
必要なインターフェイスを定義します。これは、抽象クラス、インターフェイス、または具象クラスです。
AdapterClass(アダプタークラス)
アダプターは、適合クラスを継承し、ターゲットを実装し、インターフェースの実装メソッドでスーパークラスのメソッドを呼び出します。
MatchesClass(アダプタークラス)
アダプターは、適応する役割です。適応する必要のある既存のインターフェースを定義します。アダプタークラスは、通常、クライアントが使用したいビジネスメソッドを含む具体的なクラスです。場合によっては、アダプタークラスのソースコードはありません。
クラスアダプタパターン
- 一致したクラス(MatchesClass)
public class ClassAdapter {
public void testMethodOne(){
System.out.println("被适配的方法!");
}
}
- アダプタークラス(AdapterClass)
public class Adapter extends ClassAdapter implements TargetInterface {
/**
* @Author LiDong
* @Description //TODO 重写接口中的方法,调用超类的方法
* @Date 21:24 2020/12/5
* @Param []
* @return void
**/
@Override
public void testMethod() {
System.out.println("调用Adapter的testMethod()!");
super.testMethodOne();
}
}
- ターゲット抽象クラス
public interface TargetInterface {
void testMethod();
}
- テストクラス
public static void main(String[] args) {
TargetInterface targetInterface = new Adapter();
targetInterface.testMethod();
}
オブジェクトアダプタパターン
オブジェクトアダプタとクラスアダプタの違いは、クラスアダプタは継承を通じて適応を完了するのに対し、オブジェクトアダプタはオブジェクトプロパティを呼び出すことによって適応を完了することです。
public class Adapter implements TargetInterface {
private ClassAdapter classAdapter = new ClassAdapter();
/**
* @Author LiDong
* @Description //TODO 重写接口中的方法,对象调用类的方法
* @Date 21:24 2020/12/5
* @Param []
* @return void
**/
@Override
public void testMethod() {
System.out.println("调用Adapter的testMethod()!");
classAdapter.testMethodOne();
}
}
主な利点
-
ターゲットクラスとアダプタクラスを分離し、元の構造を変更せずにアダプタクラスを導入して、既存のアダプタクラスを再利用します。
-
クラスの透明性と再利用性を向上させます。
-
柔軟性とスケーラビリティは非常に優れており、構成ファイルを使用することで、アダプターを簡単に交換できます。
-
ターゲットクラスとアダプタクラスを分離し、元の構造を変更せずにアダプタクラスを導入して、既存のアダプタクラスを再利用します。
-
クラスの透明性と再利用性を向上させます。
-
柔軟性とスケーラビリティは非常に優れており、構成ファイルを使用することで、アダプターを簡単に交換できます。