美文网首页
三种设计模式的三种禅语

三种设计模式的三种禅语

作者: 搬砖的小学生 | 来源:发表于2017-11-30 20:45 被阅读0次

    设计模式以前讲过很多次,但是仔细思考一下,你会发现每一种模式之间存在着微妙差异。今天要讲的是装饰者模式、适配器模式和外观模式的异同。同样是中转站,但是它们分别赋予了三种不同的禅意:责任、变化、做减法。

    装饰者模式:责任

    装饰者模式动态地将责任附加到目标对象上。它的降临就是要赋予目标对象新的能量。 如图是Java的Input流继承图:

    InputStream是输入流,而它的子类FileInputStream是文件输入流。FilterInputStream就是一个装饰者类,通过继承它,可以给文件输入流加上特异功能。比如BufferedInputStream可以使其组装成一个带缓冲区的文件输入流。

    “责任“强调的是在原有基础上的附加。

    适配器模式:变化

    适配器模式将一个类的接口,转换成客户期望的另一个接口。它的意义在于,让不兼容某个接口的类可以完美使用该接口。如图是InputStream和Reader的关系图:

    Reader家族是要使用字符输入流的,而InputStream是字节输入流,但我又要用你,所以就用InputSreamReader做一个适配,把你转成字符输入的流。

    所以,这种转换就强调的是“变化“,变化之后的你,已经不是原来那个你了。

    外观模式:做减法

    外观模式提供了统一的接口,用来访问子系统中的一群接口。它让你从繁琐的子系统中解耦出来,一步到位:

    外观模式也广泛应用于各种架构设计中。比如下面是我之前讲ServletContext和Tomcat容器时提到的一个关系图,在大的系统架构中,经常需要用一个Façade来提取繁琐的子系统逻辑,使得功能调用方便快捷。

    Less is more。外观模式,简单而深奥。


    更多内容微信扫描关注本人订阅号:

    相关文章

      网友评论

          本文标题:三种设计模式的三种禅语

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