一、什么是设计模式
设计模式是面对各种问题进行提炼和抽象而形成的解决方案。这些设计方案是前人不断试验,考虑了封装性、复用性、效率、可修改、可移植等各种因素的高度总结。它不限于一种特定的语言,它是一种解决问题的思想和方法。
设计模式的原则:高内聚,低耦合
二、设计模式的分类
设计模式可以分为三个大类:创建类设计模式、结构类设计模式、行为类设计模式。
1、创建类设计模式
创建类设计模式,提供示例话方法,为适合的状况提供相应的对象创建方法。创建类设计模式包括:单例模式、工厂模式、原型模式、建造者模式。
2、结构类设计模式
结构类设计模式,通常用来处理实体之间的关系,使的这些实体能够更好对协同工作。结构类设计模式可以分为装饰器模式、适配器模式、门面模式、组合模式、享元模式、桥梁模式;
3、行为类设计模式
行为类设计模式,用于在不同的实体间进行通信,为实体之间的通信提供更容易、更灵活的通信方式。行为类设计模式可以细分为策略模式、责任链模式、命令模式、中介者模式、模板模式、迭代器模式、访问者模式、观察者模式、解释器模式、备忘录模式、状态模式。
三、设计模式与架构、框架的关系
1、软件框架与设计模式的关系
软件框架随着软件工程的发展而出现,所谓的软件框架,是提取了特定领域的软件的共性部分所形成的软件体系,它并不是一个成熟的软件,而更像是一个“半成品”,程序员在框架之上,可以很方便地某些特定领域实现又快又可靠的二次开发。
设计模式和软件框架在软件设计中是两个不同的研究领域:
- A、设计模式如前边的定义所讲,它指的是针对一类问题的解决方法,一个设计模式可应用于不同的框架和被不同的语言所实现;而框架则是一个应用的体系结构,是一种或多种设计模式和代码的混合体;
- B、设计模式相较于框架更容易移植,并且可以用各种语言实现,而软件框架则受限于领域大环境。虽然设计模式和软件框架有很多不同,但在某些方面他们二者是统一的,即重视软件复用,提高开发效率。
2、软件架构与设计模式的关系
软件架构是个比较大的概念,架构要考虑软件的整体结构、层次划分以及不同部分间的协作和交互等,架构的着眼点偏整体。相比之下,框架和设计模式的范围则具体很多,框架着眼于领域内的解决方法,而设计模式则针对一类问题的解决方案和设计思路。
总体来说,软件架构可以由不同的框架和不同的设计模式,再加上特定的构件组合来实现;框架可以根据设计模式结合特定编程语言和环境来实现。设计模式就是解决单一问题的设计思路和解决方法。
参考系列文章:
https://zhuanlan.zhihu.com/p/31675841