JAvaモードの------アダプタモード
3323 ワード
アダプタ:他の人の彼女をあなたの彼女に変換するなど、実行できないものを実行可能に変換します.他の人のお金をあなたのお金に変換します.アメリカのパワーを中国のパワーに変える.使用できないインタフェースを使用可能なインタフェースに変換するなど、アダプタと呼ばれます.
OK.本題に入ります........
JDKのGUIでは、有名なマウスリスナーがアダプタのモードや他のものを使っています.
1つのクラスのインタフェースを所望の別のインタフェースに変換することで、インタフェースが一致しないために一緒に仕事ができなかった2つのクラスが一緒に仕事をすることができる.
アダプティブには、クラスアダプタとオブジェクトアダプタがあり、前者は継承を使用し、後者はインデックスを保持します.では、両者にはどんな違いがあるのでしょうか.実際の項目ではどちらを優先すべきでしょうか?下記をご覧ください.
まず例を挙げて説明しますが、アメリカでは標準コンセントが60 HZで、中国では準コンセントが50 HZなので、今はアメリカのコンセントを使う必要があります.直接使うことはできませんが、どうすればいいのでしょうか.60 HZを50 HZに変換するアダプタが必要です.OK.分かったか?コードを見てみましょう.
一、クラスアダプタ
では、以下のテストクラスを通じて、私たちが必要とするものを得ることができます.
OK.見えますか?クラスアダプタは、インタフェース内のすべてのメソッドを実装し、被アダプタのすべてまたは一部のメソッドを継承するために、アダプタ内のインタフェースロジックを実装するだけで、ユーザは考えられる効果を達成することができる.
二、対象アダプタ
注意:一部のクラスは上記と同じです.
OK.見えますか?クラスアダプタとは異なり、オブジェクトアダプタはアダプターの参照を持っています.後で他のオブジェクトを変換する場合は、アダプタを変更します.
ちなみにここでは、JDKのWindowAdapter、MouseAdapterなどのアダプタについては、抽象クラスがすべてのインタフェースを実現する方法であり、開発者にとっては抽象クラスの一部の主法を実現するだけで、インタフェースのすべての方法を実現する必要がなく、便利になった.
では、この2つの異同について何があるのでしょうか.私たちは実際の開発で、どちらを優先すべきでしょうか.
この問題についてはやはりみんなに討論してもらいましょう.
OK.本題に入ります........
JDKのGUIでは、有名なマウスリスナーがアダプタのモードや他のものを使っています.
1つのクラスのインタフェースを所望の別のインタフェースに変換することで、インタフェースが一致しないために一緒に仕事ができなかった2つのクラスが一緒に仕事をすることができる.
アダプティブには、クラスアダプタとオブジェクトアダプタがあり、前者は継承を使用し、後者はインデックスを保持します.では、両者にはどんな違いがあるのでしょうか.実際の項目ではどちらを優先すべきでしょうか?下記をご覧ください.
まず例を挙げて説明しますが、アメリカでは標準コンセントが60 HZで、中国では準コンセントが50 HZなので、今はアメリカのコンセントを使う必要があります.直接使うことはできませんが、どうすればいいのでしょうか.60 HZを50 HZに変換するアダプタが必要です.OK.分かったか?コードを見てみましょう.
一、クラスアダプタ
package com.stiven.adapter.classadapter;
/**
* 50HZ
*
* @author 063
* @version N/A
*/
public interface Target
{
public void get50HZ_CH();
}
/**
* ,
*
* @author 063
* @version N/A
*/
public class SocketAdaptee
{
public void get60HZ_US()
{
System.out.println(" ");
}
}
/**
* ,
*
* @author 063
* @version N/A
*/
public class SocketAdapter extends SocketAdaptee implements Target
{
@Override
public void get50HZ_CH()
{
this.get60HZ_US();
System.out.println(" .... ...");
}
}
では、以下のテストクラスを通じて、私たちが必要とするものを得ることができます.
public class Client
{
public static void main(String[] args)
{
Target target = new SocketAdapter();
target.get50HZ_CH();
}
}
OK.見えますか?クラスアダプタは、インタフェース内のすべてのメソッドを実装し、被アダプタのすべてまたは一部のメソッドを継承するために、アダプタ内のインタフェースロジックを実装するだけで、ユーザは考えられる効果を達成することができる.
二、対象アダプタ
注意:一部のクラスは上記と同じです.
/**
* ,
*
* @author 063
* @version N/A
*/
public class ObjectAdater implements Target
{
/**
* ,
*/
private SocketAdaptee socketAdaptee;
public ObjectAdater(SocketAdaptee socketAdaptee)
{
this.socketAdaptee = socketAdaptee;
}
@Override
public void get50HZ_CH()
{
socketAdaptee.get60HZ_US();
System.out.println(" .... ...");
}
}
public class Client
{
public static void main(String[] args)
{
SocketAdaptee socketAdaptee = new SocketAdaptee();
ObjectAdater objectAdater = new ObjectAdater(socketAdaptee);
objectAdater.get50HZ_CH();
}
}
OK.見えますか?クラスアダプタとは異なり、オブジェクトアダプタはアダプターの参照を持っています.後で他のオブジェクトを変換する場合は、アダプタを変更します.
ちなみにここでは、JDKのWindowAdapter、MouseAdapterなどのアダプタについては、抽象クラスがすべてのインタフェースを実現する方法であり、開発者にとっては抽象クラスの一部の主法を実現するだけで、インタフェースのすべての方法を実現する必要がなく、便利になった.
では、この2つの異同について何があるのでしょうか.私たちは実際の開発で、どちらを優先すべきでしょうか.
この問題についてはやはりみんなに討論してもらいましょう.