liguofeng29’s blog

個人勉強用ブログだっす。

デザインパターン - Adapter

 【Adapterパターンとは】

強制的にインタフェースを変更させる。

 

【Adapterパターンのクラス図】

 

【Adapterパターンのメリット】

既存のAPIを新しいAPIに強制的に変更できる。

 

【サンプル】

Adaptee.java
package adapter;
 
/**
 * 被せられるクラス
 */
public class Adaptee {
public void method() {
System.out.println("私は再利用されるメソッドです。");
}
}
 
Adapter.java
package adapter;
 
/**
 * 被せるクラス
 */
public class Adapter extends Adaptee implements NewInterface{
 
@Override
public void target() {
super.method();
}
}
 
 
NewInterface.java
package adapter;
// 適用したいインタフェース
public interface NewInterface {
public void target();
}
 
テストクラス
package adapter;
 
public class AdapterPatternTest {
public static void main(String[] args) {
NewInterface newInterface = new Adapter();
newInterface.target();
}
}

 

テスト結果
私は再利用されるメソッドです。

※結果的に、NewInterfaceのtarget()を使って、

Adaptee.javaのmethod()が呼ばれ、再利用ができた。 

 

上記の継承によるAdapter以外に委譲による方法↓

 

Adapter.java
package adapter;
 
/**
 * 被せるクラス
 */
public class Adapter implements NewInterface{
 
Adaptee adaptee;
 
public Adapter() {
this.adaptee = new Adaptee();
}
@Override
public void target() {
adaptee.method();
}
}