您的位置:首页 > 其它

设计模式之适配器模式

2017-10-19 15:04 281 查看
适配器分类:

          1.对象适配器:采用组合方式的适配器

          2.类适配器:采用继承方式的适配器

两者的区别:

          对象适配器把“被适配着”作为一个对象组合到适配器类中,以修改目标接口包装被适配者

           类适配器通过多重继承不兼容接口,实现对目标接口的匹配,单一的为某个类而实现适配

适配器作用:

          1.透明   :通过适配器客户端可以调用同一接口,这样做更简单、直接、紧凑

          2.重用  :复用了现存的类,解决了现存的类与复用环境要求不一致的问题

          3.低耦合  :将目标类与适配者类解耦,通过引入一个适配器类重用现有的适配者类,而无需修改原有的类(遵循开闭原则)

对象适配器 代码示例:(一台笔记本电脑只能使用三孔插座  但是现在只存在两孔插座)

两孔插座 GBTwoPlug 类

/**
*两孔插座
*/
public class GBTwoPlug {
public void powerWithTwo(){
System.out.println("使用两孔插座充电");
}
}三孔插座接口 ThreePlugif 接口类
/**
*三孔插座接口
*/
public interface ThreePlugif {
void PowerWithThree();
}两孔转三孔适配器 对象适配器TwoPlugAdapter 类
/**
* 两孔转三孔适配器
*/
public class TwoPlugAdapter implements ThreePlugif {
private GBTwoPlug plug; //两孔
public TwoPlugAdapter(GBTwoPlug twoPlug){
this.plug=twoPlug;
}
@Override
public void PowerWithThree() {
System.out.println("通过组合适配器转换");
plug.powerWithTwo();
}
}
两孔转三孔适配器类适配器 TwoPlugAdapterExtends 类代码示例:

/**
* 继承方式的插座适配器
*/
public class TwoPlugAdapterExtends extends GBTwoPlug implements ThreePlugif {
@Override
public void PowerWithThree() {
System.out.println("借助继承适配器");
this.powerWithTwo();
}
}


笔记本电脑 NotBook类
/**
* 笔记本
*/
public class NoteBook {
private ThreePlugif plugif;

public NoteBook(ThreePlugif plugif){
this.plugif=plugif;
}

//使用插座
public void charge(){
plugif.PowerWithThree();
}

public static void main(String[] args){
GBTwoPlug two=new GBTwoPlug(); //只有两孔插座
ThreePlugif plugif= new TwoPlugAdapter(two); //使用适配器 两孔转三孔
NoteBook nb=new NoteBook(plugif); //需要用三孔插座
nb.charge();
     System.out.println("--------使用类适配器------------");
     plugif =new TwoPlugAdapterExtends();
     nb=new NoteBook(plugif);
    nb.charge(); 
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: