首页 > 代码库 > 设计模式总结
设计模式总结
设计模式学习告一段落,一时间有点儿心乱如麻啊真是——剪不断,理还乱!思考了一阵子,也不知道究竟该如何去总结它,
但人还是要活着的,路还是要走的,硬着头皮往前闯!
仔细想想,在学习23个设计模式中,我们始终都在围绕着一个主线在思考代码的布局,那就是六大原则——开放封闭,单一职责,依赖倒转,里氏代换,迪米特法则和合成聚合复用原则。当然,并不是说我们必须遵循每一个原则,设计模式中讲究的是一个更优原则,每种原则都有自己的优点,但适用于不同的场合又会有自己的弱势,此时应遵循更优化。代码的设计只有更好没有最好!
那么其次,在各个原则的基础上,在面向对象设计的各个类之间是如何联系起来形成一个完成的程序代码,在这里靠的是类与类之间的就各种关系,主要包括——关联(聚合,组合),依赖,继承和实现。那么将这几种关系进一步抽象出来,其实就是面向对象程序设计语言的特点。
在我看来,设计模式最核心的东西就是原则和类之间的关系。那么代码之间到底是怎样设计,才能够使得代码的可维护性,可复用性增强,使得代码更加灵活呢?这就是不同设计模式所发挥的作用!
接下来,再来看一下23种设计模式之间的关系。教材上把它们分成了3个大类。
一、创建型
共同点:都在为类的实例化即创建对象服务。
各个模式的特点简要的概括如下:
二、结构型
共同目标:类与对象之间如何组合形成更大的结构。个人认为这里更强调的是各个类之间的一种关系。
在结构型模式中,我认为有一种最为经典的关系模式,这种关系,认真观察,它存在于每一种结构型
模式中。
如图所示:自己给起个名字吧,就叫综合模式,嘿嘿!
结构型各个模式特点简要概括如下:
在结构型模式中,我们需要注意外观、代理和适配器三种模式之间的关系:
1.代理——外观
二者之间似乎很相似,都存在一个中介来避免了直接与细节的接触。
但是它们之间有不同之处;
代理对象代表一个单一对象且它无法直接访问目标对象。
而外观对象代表一个子系统且可以直接访问子系统中的各个对象。
2.代理——适配器
这二者之间也都存在一个中间类,但是这个中间类的职责却不同。
代理是一种原来对象的代表,其他需要与这个对象打交道的操作都是和这个代表交涉。
而适配器则不需要虚构出一个代表者,只需要为应付特定使用目的,将原来的类进行组合。
对以上以上关系的理解,结合大话设计模式中的小例子很容易理解。
三、行为型
分类依据:涉及到算法和对象间的职责分配,类与对象之间的结构关系,但更加注重描述类与对象之间的通讯联系。
各种模式的简要概括如下:
其实,我们可以看出来,每个设计模式其实都是根据六大原则进行设计,已达到最优!
以上是对设计模式中各个模式的简要概括,根据自己的理解,很多可能理解的有偏差,望指正!