當我們在開發軟體時,系統的資料和行為都正確,但是介面不符時,就可以考慮使用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
沒有留言:
張貼留言