模式
模式起源于建筑业,是在特定环境中解决问题的一种方案。在软件开发过程中,我们经常提到不要重复创造轮子。重复创造轮子得不偿失,不仅浪费时间,影响整个团队的开发效率,而且轮子的可靠性和通用性等方面需要重新经历问题的考验。当然,不要重复创造轮子不意味着不需要了解轮子内部的运行原理和外部的运行效果。只有充分了解之前轮子的优势和不足,才能扬长避短,创造出更加耐用的轮子。
设计模式
软件工程的设计模式就是前人求解相同或相似问题的过程中,经过不断总结和抽象形成的通用设计模板,就像武术见招拆招的经典套路。引用经典定义,设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编写工程化,使团队成员处于同一语言体系,便于尽快达成对于设计方案的共识。
基本要素
设计模式的关键要素包括模式名称、问题、解决方案和效果。模式名称简要描述了设计模式的突出特点;问题描述了设计模式的先决条件和使用场景;解决方案详细描述了设计模式的结构和角色等方面的特点;效果描述了设计模式的优势和不足,便于设计模式之间的横向比较和选择。
分类
设计模式根据目的分为创建型模式、结构型模式和行为型模式。
构建型模式 Creational Patterns
模式起源于建筑业,是在特定环境中解决问题的一种方案。在软件开发过程中,我们经常提到不要重复创造轮子。重复创造轮子得不偿失,不仅浪费时间,影响整个团队的开发效率,而且轮子的可靠性和通用性等方面需要重新经历问题的考验。当然,不要重复创造轮子不意味着不需要了解轮子内部的运行原理和外部的运行效果。只有充分了解之前轮子的优势和不足,才能扬长避短,创造出更加耐用的轮子。
设计模式
软件工程的设计模式就是前人求解相同或相似问题的过程中,经过不断总结和抽象形成的通用设计模板,就像武术见招拆招的经典套路。引用经典定义,设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编写工程化,使团队成员处于同一语言体系,便于尽快达成对于设计方案的共识。
基本要素
设计模式的关键要素包括模式名称、问题、解决方案和效果。模式名称简要描述了设计模式的突出特点;问题描述了设计模式的先决条件和使用场景;解决方案详细描述了设计模式的结构和角色等方面的特点;效果描述了设计模式的优势和不足,便于设计模式之间的横向比较和选择。
分类
设计模式根据目的分为创建型模式、结构型模式和行为型模式。
构建型模式 Creational Patterns
- 抽象工厂模式 Abstract Factory
- 建造者模式 Builder
- 工厂方法模式 Factory Method
- 原型模式 Prototype
- 单例模式 Singleton
- 适配器模式 Adapter
- 桥接模式 Bridge
- 组合模式 Composite
- 装饰模式 Decorator
- 外观模式 Facade
- 享元模式 Flyweight
- 代理模式 Proxy
- 职责链模式 Chain of Responsibility
- 命令模式 Command
- 解释器模式 Interpretor
- 迭代器模式 Iterator
- 中介者模式 Mediator
- 备忘录模式 Memento
- 观察者模式 Observer
- 状态模式 State
- 策略模式 Strategy
- 模板方法模式 Template Method
- 访问者模式 Visitor