一想到这个模式,我就想到一个谚语“挂羊头卖狗肉”,哈哈,虽然比较难听,感觉还是比较准确的表达这个意思的。
Adapter模式:Adaptee(被适配者),Adaptor(适配器)和Adapter(组装前两者).
当需要将两者结合,但是又不能改变这两者时,要用到这种模式。
还是用刚才的那个谚语作解释吧,比较形象点:
羊头:Adaptee
狗肉:Adaptor
卖者:Adapter
呵呵,下面的例子相关信息和这个谚语没有必然的联系。
其实很多时候,原来的信息在传播过程中被适配了,当你得到信息时,还以为是原来的信息。
下面还是用工作上的一些事情做实例解析下吧:
有些公司老总在国外,一些事情是由这边的manager代理的(好像是proxy模式,呵呵),有时候我们得到的信息都是他传达过来的,
他的一些处理方式,我们会都认为是老总的处理方式。
1.Adaptee:CEO
2.Adaptor: Manager
3.Adapter:Adapter 这里就进行改变了
4.调用如下过程:
原理基本上解析清楚了,下面描述一下另外一种方法。
1.Adaptee:CEO
2.Adaptor: Manager
3.Adapter:Adapter
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);
}
}