设计模式笔记——适配器

作者: ShaDe_r | 来源:发表于2017-08-25 01:45 被阅读0次

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

    简介

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

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

    示例

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

    //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

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


    相关文章

      网友评论

        本文标题:设计模式笔记——适配器

        本文链接:https://www.haomeiwen.com/subject/pfbydxtx.html