當我們在開發軟體時,系統的資料和行為都正確,但是介面不符時,就可以考慮使用Adapter Pattern, 又或著你想銜接二個不同的Interface 時, 可以考慮這模式。
下面是Adapter Pattern的class diagram:
Target - 是Client 要呼叫的Interface , 可以是具體的class , abstract class or interface
Adapter - 包裝一個Adaptee物件, 實作 or Extends Target , 把原始的介面轉換成目標介面
Adaptee - 需要轉換的class
簡單的Code 實作:
Target.java
package adapter;
public interface Target {
public void request();
}
Adapter .java
package adapter;
public class Adaptee {
public void SpecialRequest(){
System.out.println("Other Request");
}
}
Adaptee .java
/**
*
*/
package adapter;
/**
* @author momo
*
*/
public class Adapter implements Target {
private Adaptee adaptee = new Adaptee();
/* (non-Javadoc)
* @see adapter.Target#request()
*/
@Override
public void request() {
adaptee.SpecialRequest();
}
}
adapterTest.java
package adapter;
public class adapaterTest {
/**
* @param args
*/
public static void main(String[] args) {
Target target = new Adapter();
target.request();
}
}
另一個例子可以在 Here 找到, 主要是透過實作同一個介面來將2個Class(LegacyLinem,LegacyRectangle)做處理
Reference :
Wikipedia Adapter Pattern : Link
沒有留言:
張貼留言