适配器模式——设计模式

最近温习设计模式,看了这篇文章,根据自己的理解进行了一些修改,加深一下印象。


背景:菜鸟马上又要去德国出差了,上一次由于不知道德国插座与中国插座不同,带去的电子设备好险没充上电,差点沦为摆设,让他在心仪的小美面前出了洋相。这一次,菜鸟吸取教训,特意去超市采购了一件神器,有了神器在手,再也不担心出洋相了。


package adapterPattern;

/**
 * Created by cq on 2015/8/16.
 * 测试适配器模式
 */
public class Shaver {
    private GlSSocketInterface glsocket;
    //插入插座
    public void setSocket(GlSSocketInterface glsocket){
        this.glsocket = glsocket;
    }
    //充电
    public void charge(){
        glsocket.powerWithGlS();
    }
    public static void main(String[] args){
        //菜鸟有一把剃须刀
        Shaver shaver = new Shaver();

        //菜鸟在国内给剃须刀充电
        //这里有国标插座,直接使用
        GlSSocketInterface glSSocket = new GlSSocket();
        //插入国标插座
        shaver.setSocket(glSSocket);
        //充电
        shaver.charge();


        //菜鸟出差到了国外,准备给剃须刀充电
        //这里只有德国插座(旁边小美斜睨着菜鸟)
        GeSSocket geSSocket = new GeSSocket();
        //哈哈,大笑中掏出插座适配器,插入德国插座
        glSSocket = new SocketAdapter(geSSocket);
        //剃须刀插入适配器
        shaver.setSocket(glSSocket);
        //顺利充电
        shaver.charge();
    }
}

//符合德国插座标准的德国插座
class GeSSocket{
    public void powerWithGeS(){
        System.out.println("德国插座充电中...");
    }
}

//符合国际标准的插座
interface GlSSocketInterface{
    void powerWithGlS();
}
//符合国际插座标准的插座
class GlSSocket implements GlSSocketInterface{
    public void powerWithGlS(){
        System.out.println("国标插座充电中...");
    }
}

//插座适配器,提供给国标剃须刀无缝充电体验
class SocketAdapter implements GlSSocketInterface{
    private GeSSocket geSSocket;
    public SocketAdapter(GeSSocket geSSocket){
        this.geSSocket = geSSocket;
    }
    //将德国插座送过来的电以国标插座的方式送出
    public void powerWithGlS(){
        System.out.println("正在使用适配器进行适配...");
        geSSocket.powerWithGeS();
    }
}
原文地址:https://www.cnblogs.com/read-the-spring-and-autumn-annals-in-night/p/12041955.html