一:简述
目的:为了可重用代码,代码更容易被他人理解,提高代码的可靠性。
定义:是一套被反复使用,多数人知晓,经过分类编目的,代码设计经验的总结。
(通俗来说,软件模式可以认为是对软件开发这一特定“问题”的“解法”的某种统一表示)
二:元素
基本要素:模式名称、问题、解决方案、效果、目的、实例代码和相关设计模式。
关键元素:
1.模式名称(Pattern name)
------通过一两个词描述
描述模式的问题、解决方案和效果。
命名:绝大多数模式都是根据其功能或模式结构来命名的。在学习设计模式时,应准确记忆该模式的中英文模式。
在已有的类库中,很多使用了设计模式的类名通常包含了所使用的设计模式的模式名称。
eg:(1)XXXAdapter :说明该类是一个适配器类,在设计时使用了适配器模式
(2)XXXFactory :说明该类是一个工厂类,在设计时使用了工厂方法模式,且该类一定包含了一个工厂方法用于返回一个类的实例对象
2.问题(Problem)
描述了应在何时使用该模式、该模式存在的问题、该模式存在该问题的原因。
3.解决方案(Solution)
------通过类图、核心代码加以说明
描述了设计模式的组成成分,以及这些组成成分之间的相互关系、各自的职责、协作的方式。
4.效果(Consequences)
描述了模式应用的效果以及在使用模式时应当权衡的问题。
主要是包含了模式的优缺点分析。
三:分类
(1)根据目的分类
1.创建型模式:主要用于创建对象
2.结构型模式:主要用于处理类和对象的组合
3行为型模式:主要用于描述对类或对象怎样交互和怎样分配职责
(2)根据范围分类
即模式主要用来处理类之间的关系或对象之间的关系
1.类模式:处理类和类之间关系,这些关系通过继承建立,在编译时就被确定了下来,属于静态。
2.对象模式:处理对象间的关系,这些关系在运行时时刻变化,更具动态性。
范围 \ 目的 | 创建型模式(5种) | 结构型模式(7种) | 行为型(11种) |
类模式 | 工厂方法模式 | (类)适配器模式 | 解释器模式 模板方法模式 |
对象模式 | 抽象工厂模式 建造者模式 原型模式 单例模式 | (对象)适配器模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 | 职责链模式 命令模式 迭代器模式 中介者模式 备忘录模式 观察者模式 状态模式 策略模式 访问者模式 |
四:优点
1.使得设计方案更加通俗易懂,降低了开发人员理解系统的复杂度。
2.使得重用成功的设计更加容易,并避免那些导致不可重用的设计方案。
3.使得设计方案更加灵活且易于修改。
4.提高了软件系统的开发效率和软件质量,在一定程度上节约了设计成本。
5.有利于初学者更深入的理解面向对象思想。