设计模式笔记——适配器

欢迎转载,共同进步。请注明出处:http://www.jianshu.com/u/e627f27f75b7

简介

正如其名,适配器,就是将本来不适用于当前接口的类包装成适用于当前接口的类。比如电源适配器,我们日常用电是220V交流电,而有很多电器不需要这么高的电压,于是电源适配器将220V的电压转换成电器需要的电压,这是电源适配器做的事,也是适配器模式要做的事。

适配器的UML图,图片来自puppet_master

设计模式笔记——适配器_第1张图片

示例

废话不多说,直接上代码,以电源适配为例:

//220V插座

class Socket220V{

    Applicance220V socket;    //220V电器

    public void AddApplicance(Applicance220V applicance){

        socket = applicance;

    }

    public void Work(){

        socket.Work();

    }

}


//220V电器

class Applicance220V{

    public void Work(){

        print("220V电器正常运行");

    }

}


//电源适配器

class Adapter : Applicance220V{

    ApplicanceOther applicance;

    public Adapter(ApplicanceOther applicance){

        this.applicance = applicance;

    }

    public void Work(){

        //做一些适配工作

        applicance.Work();

        print("其它电压电器也正常运行");

    }

}

在想要使用非220V电压的电器对象时,将此对象作为参数构造一个适配器,再使用这个适配器,即可完成在220V电压下使用非220V电压电器的目的。(注意适配器实际上是220V电器的子类,所以可以在适配完成后作为220V电器插入220V插座中运行)

总结

最后来总结适配器模式的优缺点:

优点:

1、可以很好地复用现有的类对象,不需要重复开发,有很好的复用性。

2、符合开放封闭原则,增加而不修改。

3、由于适配器类是适配者类的子类,因此可以在适配器类中置换一些适配者的方法,使得适配器的灵活性更强。

缺点:

1、适配器是一种补偿型的模式,如果可以提前将接口设计得统一的话,完全不需要适配器模式。(但是往往没办法考虑得这么周到)

参考文献

http://blog.csdn.net/puppet_master/article/details/51326210


文章如有错误,欢迎指正。



你可能感兴趣的:(设计模式笔记——适配器)