设计模式笔记-概述
设计模式笔记-概述
1、什么是模式
模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。【A pattern is a successful or efficient solution to a recurring problem within a context】;
最早是建筑领域由Christopher Alexander提出;
软件领域模式提出是由Gang of Four,简称GoF,分别是Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides四位著名软件工程学者;
2、软件模式(Software Patterns)
将模式的一般概念应用于软件开发领域,即软件开发的总体指导思路或参照样板。软件模式并非仅限于设计模式,还包括架构模式、分析模式和过程模式等,在软件开发生命周期的每一个阶段都存在着一些被认同的模式。
软件模式的基础结构主要由四部分构成:
1. 问题描述【待解决的问题是什么】
2. 前提条件【在何种环境或约束条件下使用】
3. 解法【如何解决】
4. 效果【有哪些优缺点】
3、设计模式(Design Patterns)
定义:设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。
设计模式是用于在特定的条件下为一些重复出现的软件设计问题提供合理的、有效的解决方案,它是软件模式的分支.
1995年, GoF将收集和整理好的23种设计模式汇编成 【Design Patterns: Elements of Reusable Object-Oriented Software】《设计模式:可复用面向对象软件的基础》一书;
狭义的设计模式是指GoF在《设计模式:可复用面向对象软件的基础》一书中所介绍的23种经典设计模式;
3.1设计模式的要素
1.模式名称(Pattern Name)
通过一两个词来描述模式的问题、解决方案和效果,以便更好地理解模式并方便开发人员之间的交流,绝大多数模式都是根据其功能或模式结构来命名的;
2.问题(Problem)
描述了应该在何时使用模式,它包含了设计中存在的问题以及问题存在的原因;
3.解决方案(Solution)
描述了一个设计模式的组成成分,以及这些组成成分之间的相互关系,各自的职责和协作方式,通常解决方案通过UML类图和核心代码来进行描述;
4.效果(Consequences)
描述了模式的优缺点以及在使用模式时应权衡的问题;
3.2常用设计模式
常用设计模式和使用频率
在GoF中23种设计模式中包含5种创建型设计模式、7种结构型设计模式和11种行为型设计模式.
创建型模式(Creational Pattern)
编号 | 模式名称 | 学习难度 | 使用频率 |
---|---|---|---|
1 | 单例模式 Singleton Pattern | ★☆☆☆☆ | ★★★★☆ |
2 | 简单工厂模式 Simple Factory Pattern | ★★☆☆☆ | ★★★☆☆ |
3 | 工厂方法模式 Factory Method Pattern | ★★☆☆☆ | ★★★★★ |
4 | 抽象工厂模式 Abstract Factory Pattern | ★★★★☆ | ★★★★★ |
5 | 原型模式 Prototype Pattern | ★★★☆☆ | ★★★☆☆ |
6 | 建造者模式 Builder Pattern | ★★★★☆ | ★★☆☆☆ |
结构型模式(Structural Pattern)
编号 | 模式名称 | 学习难度 | 使用频率 |
---|---|---|---|
7 | 适配器模式 Adapter Pattern | ★★☆☆☆ | ★★★★☆ |
8 | 桥接模式 Bridge Pattern | ★★★☆☆ | ★★★☆☆ |
9 | 组合模式 Composite Pattern | ★★★☆☆ | ★★★★☆ |
10 | 装饰模式 Decorator Pattern | ★★★☆☆ | ★★★☆☆ |
11 | 外观模式 Façade Pattern | ★☆☆☆☆ | ★★★★★ |
12 | 享元模式 Flyweight Pattern | ★★★★☆ | ★☆☆☆☆ |
13 | 代理模式 Proxy Pattern | ★★★☆☆ | ★★★★☆ |
行为型模式(Behavioral Pattern)
编号 | 模式名称 | 学习难度 | 使用频率 |
---|---|---|---|
14 | 职责链模式 Chain of Responsibility Pattern | ★★★☆☆ | ★★☆☆☆ |
15 | 命令模式 Command Pattern | ★★★☆☆ | ★★★★☆ |
16 | 解释器模式 Interpreter Pattern | ★★★★★ | ★☆☆☆☆ |
17 | 迭代器模式 Iterator Pattern | ★★★☆☆ | ★★★★★ |
18 | 中介者模式 Mediator Pattern | ★★★☆☆ | ★★☆☆☆ |
19 | 备忘录模式 Memento Pattern | ★★☆☆☆ | ★★☆☆☆ |
20 | 观察者模式 Observer Pattern | ★★★☆☆ | ★★★★★ |
21 | 状态模式 State Pattern | ★★★☆☆ | ★★★☆☆ |
22 | 策略模式 Strategy Pattern | ★☆☆☆☆ | ★★★★☆ |
23 | 模板方法模式 Template Method Pattern | ★★☆☆☆ | ★★★☆☆ |
24 | 访问者模式 Visitor Pattern | ★★★★☆ | ★☆☆☆☆ |
为什么是24种模式? 简单工厂模式并不包含在GoF论述的23种设计模式中.
>>> 每个人都觉得自己有理由,所以需要理解,但理解并不能化解所有局限,所以需要宽容。 <<<