構造モデル
中心的な役割は:大きな問題を解決するために、このように全体的なクラス構造を拡大し、プログラムの構造から疎結合を達成することです
アダプター・パターンアダプター
現実の生活の例:Aコンバータ
2つの方法でアダプタ:
1、クラスアダプタ(継承)
/ **アダプタ必要なオブジェクト
*の@author帆入るコード
*
* /
publicクラスAdaptee {
ます。public void要求(){
System.out.printlnは( "何かを行うことができます");
}
}
/ **
*アダプタ(アダプタクラス)
* @author帆入るコード
*
* /
パブリッククラスザはAdapteeに器具を拡張ターゲットアダプタ{
*アダプタ(アダプタクラス)
* @author帆入るコード
*
* /
パブリッククラスザはAdapteeに器具を拡張ターゲットアダプタ{
@Override
公共ボイドhandleReq(){
super.request()。
}
公共ボイドhandleReq(){
super.request()。
}
}
/ **
*クライアント
* @authorセイル入るコード
*
* /
publicクラスクライアント{
公共ボイド試験(ターゲットT){
t.handleReq();
}
公共の静的な無効メイン(文字列[] args){
クライアント新しい新しい= Cクライアント();
ターゲットアダプタ新しい新しい= T();
c.test(T);
}
}
*クライアント
* @authorセイル入るコード
*
* /
publicクラスクライアント{
公共ボイド試験(ターゲットT){
t.handleReq();
}
公共の静的な無効メイン(文字列[] args){
クライアント新しい新しい= Cクライアント();
ターゲットアダプタ新しい新しい= T();
c.test(T);
}
}
パブリックインターフェイスターゲット{
公共ボイドhandleReq();
公共ボイドhandleReq();
}
図2に示すように、オブジェクトアダプタ(組み合わせ)
/ **アダプタ必要なオブジェクト
*の@author帆入るコード
*
* /
publicクラスAdaptee {
ます。public void要求(){
System.out.printlnは( "何かを行うことができます");
}
}
*の@author帆入るコード
*
* /
publicクラスAdaptee {
ます。public void要求(){
System.out.printlnは( "何かを行うことができます");
}
}
/ **
*アダプタ(オブジェクトアダプタ)
* @author帆入るコード
*
* /
publicクラスAdapteeに実装ターゲット{延びアダプタ2
プライベートAdaptee A;
@Override
公共ボイドhandleReq(){
a.request();
}
パブリックアダプタ2を() {
}
パブリックアダプタ2(Adaptee A){
this.a = A;
}
}
*アダプタ(オブジェクトアダプタ)
* @author帆入るコード
*
* /
publicクラスAdapteeに実装ターゲット{延びアダプタ2
プライベートAdaptee A;
@Override
公共ボイドhandleReq(){
a.request();
}
パブリックアダプタ2を() {
}
パブリックアダプタ2(Adaptee A){
this.a = A;
}
}
パブリッククラスクライアント2 {
公共ボイド試験(ターゲットT){
t.handleReq()。
}
パブリック静的無効メイン(文字列[] args){
クライアントC =新しいクライアント()。
Adaptee A =新しいAdaptee();
ターゲットT =新しいアダプタ2(A)
c.test(T)。
}
}
公共ボイド試験(ターゲットT){
t.handleReq()。
}
パブリック静的無効メイン(文字列[] args){
クライアントC =新しいクライアント()。
Adaptee A =新しいAdaptee();
ターゲットT =新しいアダプタ2(A)
c.test(T)。
}
}
パブリックインターフェイスターゲット{
公共ボイドhandleReq();
公共ボイドhandleReq();
}