ディレクトリ
アダプタモード(Adapterパターン)が構造モデルです。インタフェースは、主に非互換性の問題を解決するために使用され、2つのクラスが一緒に働くことができないため、不一致のインタフェースで、もともと一緒に働くことができるように、別のインターフェイスを期待して、クライアントにクラスのインタフェースを変換します。
関連概念
- ターゲットクラス(ターゲット):抽象クラスまたはインタフェースとすることができる必要インターフェースクライアントは、それが具体的なクラスであってもよい定義します
- (Adaptee)フィッタ:既存のクラスまたはオブジェクトである役割に適応させる必要がある、フィッタ一般的なクラスは、顧客が含まれている具体的なクラスは、いくつかのケースでは適切ではないかもしれないビジネスメソッドを使用したいですそれらと、クラスのソースコード
- アダプタ(アダプタ):義務の両方がAdapteeに関連付けられている継承対象とオブジェクトを通じて接触している可能にする、オブジェクト・アダプタに、Adapteeとターゲットへの適応、対象キャラクタにフィッタ変換を取ることです
オブジェクトアダプタ、アダプタの種類:アダプタモードは2つに分割されています。
オブジェクトアダプタ
あなたは、重合の効果を達成するために/拡張を組み合わせることで、装飾== ==オブジェクトアダプタが前のモードと非常によく似て見ることができます。
クラスアダプタ
拡大するため、継承/実装を通じてアダプタクラスは、カップリングがもたらす検討する必要があります。
例
私は最近だけ表示内の配線に到達する時間は、MAC雷インターフェイスで使用されていない見つけるために、外部モニタを望んでいたし、他のディスプレイ、macbookproであるコンピュータで動作します。
だから私はアダプタが必要。
ターゲットが黄色タイプCインタフェース上の例の図で、上図はAdaptee赤雷インターフェイスで、全体のアダプターは、アダプターです。
ターゲットクラス
public interface TypeC {
void useTypeCPort();
}
カテゴリ別に適応
public class Lightning {
public void extent() {
System.out.println("通过lightning接口外接显示器");
}
}
オブジェクトアダプタ
public class PortObjectAdapter implements TypeC {
private Lightning lightning;
public PortObjectAdapter(Lightning lightning) {
this.lightning = lightning;
}
@Override
public void useTypeCPort() {
System.out.println("使用type-c转接头");
lightning.extent();
}
}
クラスアダプタ
public class PortClassAdapter extends Lightning implements TypeC {
@Override
public void useTypeCPort() {
System.out.println("使用type-c转接头");
super.extent();
}
}
使用
//对象适配器
System.out.println("----对象适配器----");
Lightning lightning = new Lightning();
PortObjectAdapter adapter = new PortObjectAdapter(lightning);
adapter.useTypeCPort();
//类适配器
System.out.println("----类适配器----");
PortClassAdapter adapter1 = new PortClassAdapter();
adapter1.useTypeCPort();
----对象适配器----
使用type-c转接头
通过lightning接口外接显示器
----类适配器----
使用type-c转接头
通过lightning接口外接显示器
概要
- アダプタモデルは、比較的簡単である元のインターフェースを変更しない場合は、別のインタフェース要件にそれらを適応させることです。
- 現実には、多くの場合、ターゲットクラスとフィッタクラスがすでに存在しているので、あなただけのことができる追加のアダプタクラスを導入する必要があります。
- ターゲットクラスとクラスにデカップリングアダプタクラスを導入することにより、適合されています。
- 沿って、「開閉の原則、」簡単に交換して、新しいアダプタクラスすることができます。
システムの過度の使用は、たとえば、非常に複雑になり、明らかにAインタフェースが呼び出された参照、実際には、内部がBのインタフェースを実現するようになってなります。
あなたはここに関連するコードを入手することができますモード-Adapterデザインモードを