我工作的那點事--學習《設計模式》例項應用(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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 我工作的那點事--學習《設計模式》例項應用(strategy模式)設計模式
- 我工作的那點事--學習《設計模式》例項應用(Mediator模式)設計模式
- 我工作的那點事--學習《設計模式》例項應用(factory模式)設計模式
- 我工作的那點事--學習《設計模式》例項應用(Prototype模式)設計模式
- 我工作的那點事--學習《設計模式》例項應用(Builder模式)設計模式UI
- 我工作的那點事--學習《設計模式》例項應用(Observer模式)設計模式Server
- 我工作的那點事--學習《設計模式》例項應用(decorator模式)設計模式
- 我工作的那點事--學習《設計模式》例項應用(Singleton模式)設計模式
- 我工作的那點事--學習《設計模式》例項應用(composite模式)設計模式
- 我工作的那點事--學習《設計模式》例項應用(Facade模式)設計模式
- 我學設計模式 之 單例模式設計模式單例
- 設計模式學習-單例模式設計模式單例
- 設計模式學習之單例模式設計模式單例
- 設計模式---Adapter模式設計模式APT
- 設計模式應用舉例設計模式
- 設計模式快速學習(三)單例模式設計模式單例
- 設計模式學習筆記——單例模式設計模式筆記單例
- JavaScript設計模式學習之單例模式JavaScript設計模式單例
- 我的Java設計模式-單例模式Java設計模式單例
- 小學生學習設計模式之單例模式設計模式單例
- 從JavaScript學習設計模式-02單例模式JavaScript設計模式單例
- 設計模式學習筆記之單例模式設計模式筆記單例
- Android 設計模式の單例模式——應用最廣的模式Android設計模式單例
- 設計模式學習(一)單例模式補充——單例模式析構設計模式單例
- 設計模式學習筆記(九)橋接模式及其應用設計模式筆記橋接
- 設計模式學習筆記(十二)享元模式及其應用設計模式筆記
- Java設計模式學習筆記(五) 單例模式Java設計模式筆記單例
- 設計模式學習-使用go實現單例模式設計模式Go單例
- 重學設計模式-單例模式設計模式單例
- 設計模式學習筆記(十)裝飾器模式及其應用設計模式筆記
- 《我是面試官》設計模式-單例模式面試設計模式單例
- 我學設計模式 之 代理模式設計模式
- 我學設計模式 之 策略模式設計模式
- 我學設計模式 之 命令模式設計模式
- 我學設計模式 之 中介模式設計模式
- 我學設計模式 之 模板模式設計模式
- 我學設計模式 之 合成模式設計模式
- 設計模式例項程式碼設計模式