2011年5月24日 星期二

Design Pattern - Adapte (Object)

Adapter Pattern 有分為 Object Adapter 與 Class Adapter , 這邊主要是針對Object Adapter做筆計,
當我們在開發軟體時,系統的資料和行為都正確,但是介面不符時,就可以考慮使用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

沒有留言:

張貼留言