前面用3篇文章具体的分析了14种设计模式的定义、特点,并给出了例子和具体实现。设计模式中不光只有这14种,更详细划分的话还有许多设计模式我没有涉及到,想了解的其余设计模式可以去阅读博客。
一、设计模式的作用
我们已经了解了这么多设计模式,那么设计模式的作用是什么呢?首先,设计模式能让你和其他开发人员之间有共享的词汇,一旦懂得这些词汇,和其他开发人员之间沟通就很容易。其次,设计模式也可以把你的思考架构的层次提高到模式层面,而不是停留在琐碎的对象上。
共享模式词汇作用巨大。一,当你使用模式名称和其他开发人员或者开发团队沟通时,你们之间交流的不只是模式名称,而是一整套模式背后所象征的质量、特性、约束。二,模式能够让你用更少的词汇做更充分的沟通。当你用模式描述的时候,其他开发人员很容易知道你对设计的想法。三,将说话的方式保持在模式层次,可让你待在“设计圈子”久一点。使用模式谈论软件系统,可以让你保持在设计层次,不会被压低到对象与类这种琐碎的事情上面。四,对于设计模式有深入了解的团队,彼此之间对于设计的看法不容易产生误解。
我们大量使用着别人设计好的库与框架,这为我们提供了极大的便利。但是,库与框架无法帮助我们将应用组织成容易了解、容易维护、具有弹性的架构,所以需要设计模式。
二、设计模式与OO(面向对象)的联系
其实我们分析前面的设计模式的本质,可以发现他们都在一定程度上遵循了OO的基本原则。例如装饰者模式遵循了开闭原则,工厂方法模式和抽象工厂模式遵循了依赖倒置原则。
三、设计模式之间的区别和联系
1、工厂方法和抽象工厂模式
所有的工厂都是用来封装对象的创建。
但工厂方法模式中类的创建依赖工厂类,如果想要拓展程序,有可能对工厂类进行修改,这违背了闭包原则。抽象工厂模式创建一个抽象工厂接口,一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。
2、装饰者模式、适配器模式和外观模式
这三种模式的行为都是包装类,但他们的意图却大不相同。
适配器将一个对象包装起来以改变其接口;装饰者将一个对象包装起来以增加新的行为和责任;而外观将一群对象包装起来以简化其接口。
3、状态模式、模版方法模式和策略模式
这三种模式都封装算法,但他们的意图不同。
状态模式封装基于状态的行为,并将行为委托到当前状态;模版方法模式由子类决定如何实现算法中的某些步骤;策略模式将可以互换的行为封装起来,然后决定使用哪一个行为。