设计模式-装饰模式

该设计模式主要通过继承的关系来完成对已有功能的一种扩展和延伸,而不会破坏原有功能的体系结构,这种设计模式也非常的符合开闭原则的思想,对扩展开发,而对修改是关闭的。

最典型的例子的就是计算机的硬件组织结构,其中最核心的就是cpu和主板这部分,而其他的外部设备都是通过接口的形式进行连接组装的,当然最原始的那种集成主板就不说了,也已经渐渐被淘汰了,因为在设计的时候他也没有使用面向对象的思想,所以不管任何事物,他们都遵循一种最优的原则。而谁能掌握这种原则,那么他就是这方面的王者。

刚刚提到计算机的很多外置设备都是通过接口的形式来完成的,也就是说,当我需要新的硬件时,而不用对原有的主件修改,而只需要一个插槽接口就能完成了,而如果某个部分损坏了,也只需要替换一部分的内容,而不会对整体造成影响。这种思想就是开闭原则,对于扩展是允许的,而修改则是关闭的。而刚刚说到的这种硬件结构,它又同样是遵循了另外一种原则-单一原则,每个零件负责一部分的工作,例如cpu主要负责指令集的运算和程序的处理,硬盘负责文件的存储,显示屏负责内容的展示。这些都是面向对象的思想。

有了上面简单的介绍和说明,那么我们来看下这个装饰模式,刚刚也提到它是通过继承的形式来对原有对象功能的扩展而不会破坏原有的功能,下面我们可以看下它的一个结构图:

设计模式-装饰模式


这是最基础的关系图,复杂的都是在这个基础之上进行的延伸,多几个接口,多几个子类这些,核心思想就是通过继承的关系,在不改变父类的情况下对原有的方法进行功能

扩展。在子类里面引用到父类对象,然后在方法里通过调用父类的方法然后对其进行增强。

在IO的read方法和readline方法就是最典型的例子,还有Spring的AOP切面也有用到,不改变原来代码的情况,对其进行增强。