设计模式从何而来
软件工程技术的模式,起源于建筑领域。模式之父 Christopher Alexander 及其团队花费约20年的时间,通过对住宅以及周边环境进行大量调查研究和资料收集工作之后发现人们对舒适住宅和城市环境存在一些共同的认同规律。在Christopher Alexander的经典著作《建筑的永恒之道》中,给出了关于模式的定义:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地重用那些已有的成功的解决方案,无须再重复相同的工作。
模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案
A pattern is a successful or efficient solution to a recurring problem within a context
1990年,软件工程界开始关注Alexander等在建筑方面的重大突破。由“四人组”(Erich Gamma,Richard Helm,Ralph Johnson和John Vlissides)四名著名的软件工程学者,他们在1994年归纳发表了23种在软件开发中使用频率比较高的设计模式,旨在用模式来统一沟通面向对象方法在分析、设计和实现之间的鸿沟。
软件开发生命周期的每一个阶段都存在着一些被认同的模式
软件模式的基础结构
- 问题描述:待解决的问题是什么
- 前提条件:在何种环境或约束条件下使用
- 解决办法:如何解决
- 效果:有哪些优缺点
软件模式与具体的应用领域无关,无论是移动开发,Web开发还是嵌入式开发等,都可以使用软件模式。
设计模式作为最深的分支,用于在特定条件下为一些重复出现的软件设计问题提供合理的有效的解决方案。
设计模式是什么
设计模式的定义
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的,代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并保证代码可靠性。
设计模式的内容
- 模式名称:通过一两个词描述模式的问题、解决方案和效果,以便更好地理解模式并方便开发人员之间的交流,绝大多是模式都是根据其功能或者模式结构来命名
- 问题:描述了应该在何时使用模式,它包含了设计中存在的问题以及问题存在的原因
- 解决方案:描述了一个设计模式的组成部分,以及这些组成成分之间的相互关系,各自的职责和协作方式,通常通过UML类图和核心代码进行描述
- 效果:描述了模式的优缺点以及在使用模式时应权衡的问题
设计模式的分类
23个GoF设计模式(还有一个不再23种GoF设计模式种的【简单工厂模式】)
- 根据用途分类
- 创建型(5个):主要用于描述如何创建对象
单例模式 Singleton Pattern
工厂方法模式 Factory Method Pattern
抽象工厂模式 Abstract Factory Pattern
原型模式 Prototype Pattern
建造者模式 Builder Pattern
简单工厂模式 Simple Factory Pattern- 结构型(7个):主要用于描述如何实现类或对象的组合
适配器模式 Adapter Pattern
桥接模式 Bridge Pattern
组合模式 Decorator Pattern
装饰模式 Decorator Pattern
外观模式 Facade Pattern
享元模式 Flyweight Pattern
代理模式 Proxy Pattern
- 行为型(11个):主要用于描述类或对象怎样交互以及怎样分配职责
职责链模式 Chain of Responsibility Pattern
命令模式 Command Pattern
解释器模式 Interpreter Pattern
迭代器模式 Iterator Pattern
中介者模式 Mediator Pattern
备忘录模式 Memento Pattern
观察者模式 Observer Pattern
状态模式 State Pattern
策略模式 Strategy Pattern
模版方法模式 Template Method Pattern
访问者模式 Visitor Pattern
- 根据处理对象分类
- 类模式:用于处理类之间的关系
- 对象模式:用于处理对象之间的关系
这是作为完成刘伟老师的课程后的课程总结。真的是不错的老师,祝您教师节快乐!