我工作的那點事--學習《設計模式》例項應用(Adapter模式)
一想到這個模式,我就想到一個諺語“掛羊頭賣狗肉”,哈哈,雖然比較難聽,感覺還是比較準確的表達這個意思的。[@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);
}
}
當需要將兩者結合,但是又不能改變這兩者時,要用到這種模式。
還是用剛才的那個諺語作解釋吧,比較形象點:
羊頭: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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 設計模式學習之單例模式設計模式單例
- 設計模式應用舉例設計模式
- 設計模式快速學習(三)單例模式設計模式單例
- 設計模式學習筆記——單例模式設計模式筆記單例
- C++學習隨筆——簡單的單例設計模式例項C++單例設計模式
- 小學生學習設計模式之單例模式設計模式單例
- 從JavaScript學習設計模式-02單例模式JavaScript設計模式單例
- 設計模式學習(一)單例模式補充——單例模式析構設計模式單例
- 設計模式:命令模式(Command Pattern)及例項設計模式
- 設計模式例項程式碼設計模式
- PHP設計模式-Adapter 介面卡模式PHP設計模式APT
- Java設計模式學習筆記(五) 單例模式Java設計模式筆記單例
- 設計模式學習-使用go實現單例模式設計模式Go單例
- 重學設計模式-單例模式設計模式單例
- 設計模式學習筆記(十二)享元模式及其應用設計模式筆記
- 設計模式學習筆記(九)橋接模式及其應用設計模式筆記橋接
- 《設計模式》 - 5. 介面卡模式( Adapter )設計模式APT
- 設計模式之介面卡模式(adapter pattern)設計模式APT
- 設計模式學習(一)單例模式補充——指令重排設計模式單例
- 設計模式學習筆記(十)裝飾器模式及其應用設計模式筆記
- 設計模式學習(一)單例模式的幾種實現方式設計模式單例
- 《我是面試官》設計模式-單例模式面試設計模式單例
- 設計模式學習——代理模式設計模式
- C# socket 阻止模式與非阻止模式應用例項C#模式
- JAVA物件導向高階:static的應用知識--單例模式 單例設計模式應用場景及好處 單例設計模式的實現方式Java物件單例設計模式
- Scala 與設計模式(五):Adapter 介面卡模式設計模式APT
- C#設計模式-介面卡模式(Adapter Pattern)C#設計模式APT
- 人人都會設計模式:介面卡模式--Adapter設計模式APT
- 設計模式學習筆記(十七)中介者模式及其應用場景設計模式筆記
- 用Python實現設計模式——單例模式Python設計模式單例
- 設計模式(4)——單例模式的學習及其六大戰將設計模式單例
- 設計模式(一)學習設計模式的好處設計模式
- 設計模式(單例模式)設計模式單例
- [設計模式] 單例模式設計模式單例
- 設計模式-單例模式設計模式單例
- 設計模式 —— 單例模式設計模式單例
- 設計模式 單例模式設計模式單例
- 設計模式——單例模式設計模式單例
- 設計模式大雜燴(24種設計模式的總結及學習設計模式的幾點建議)設計模式