我工作的那點事--學習《設計模式》例項應用(Adapter模式)

biqing0427發表於2007-11-28
一想到這個模式,我就想到一個諺語“掛羊頭賣狗肉”,哈哈,雖然比較難聽,感覺還是比較準確的表達這個意思的。[@more@]Adapter模式:Adaptee(被適配者),Adaptor(介面卡)和Adapter(組裝前兩者).

當需要將兩者結合,但是又不能改變這兩者時,要用到這種模式。

還是用剛才的那個諺語作解釋吧,比較形象點:

羊頭:Adaptee
狗肉:Adaptor
賣者:Adapter

呵呵,下面的例子相關資訊和這個諺語沒有必然的聯絡。

其實很多時候,原來的資訊在傳播過程中被適配了,當你得到資訊時,還以為是原來的資訊。


下面還是用工作上的一些事情做例項解析下吧:

有些公司老總在國外,一些事情是由這邊的manager代理的(好像是proxy模式,呵呵),有時候我們得到的資訊都是他傳達過來的,
他的一些處理方式,我們會都認為是老總的處理方式。


1.Adaptee:CEO

pubilc class CEO{
public String sendMessage(String message){
return "CEO:"+message;
}
}

2.Adaptor: Manager

pubilc class Manager{
public String sendMessage(String message){
return "Manager:"+message;
}
}

3.Adapter:Adapter 這裡就進行改變了

pubilc class Adapter extends CEO {

private Manager manager;

public void setManager(Manager manager){
this.manager = manager ;
}

public String sendMessage(String message){
return manager.sendMessage(message);//好像是CEO的指令 其實已經變成了manager的指令了。
}
}

4.呼叫如下過程:

Manager manager = new Manager();
Adapter adaper = new Adapter();
adaper.setManager(manager);
adaper.sendMessage("message from ceo");

原理基本上解析清楚了,下面描述一下另外一種方法。

1.Adaptee:CEO

pubilc interface ICEO{
public String sendMessage(String message);
}

public class CEO implements ICEO{

public String sendMessage(String message){
return "CEO:"+message;
}
}

2.Adaptor: Manager

pubilc interface IManager{
public String sendMessage(String message);
}

pubilc class Manager implements IManager{
public String sendMessage(String message){
return "Manager:"+message;
}
}

3.Adapter:Adapter

pubilc class Adapter implements CEO,Manager {

private Manager manager;
private CEO ceo;

public void setManager(Manager manager){
this.manager = manager ;
}

public void setCEO(CEO ceo){
this.ceo = ceo ;
}

public String sendMessage(String message){
return manager.sendMessage(message);
}
}

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9879276/viewspace-985730/,如需轉載,請註明出處,否則將追究法律責任。

相關文章