设计模式的定义
经过验证的,用于解决特点环境下,重复的出现的特定问题的解决方案
起源:建筑学
分类:创建型、行为型、结构型
4个属性:名称,问题,方案,效果
面向对象的4个原则,面向抽象原则(抽象类与接口),开-闭原则(对扩展开放,对修改关闭),多用组合少用继承原则,高内聚低耦合原则(软件开发中降低耦合度有利于软件的维护)
UML 4个关系 泛化、关联、依赖、实现
- 创建型模式:不让用户代码依赖于对象的创建、排列方式,避免用户直接使用new运算符创建对象
- 工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类(抽象产品 具体产品 构造者 具体构造者)
- 抽象工厂:提供一个创建一系列或相互依赖对象的接口,无须指定它们的具体的类(抽象工厂 具体工厂 抽象产品 具体产品)
- 单例:保证一个类只有一个实例,并提供一个访问它的全局访问点
- 行为型模式:涉及怎样合理的设计对象之间的交互通信,以及怎样合理地为对象分配职责让设计富有弹性、易扩展、易复用。
- 命令:将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化(命令 具体命令 请求者 接收者)
- 观察者:定义一个对象间的一对多的依赖关系,当一个对象的状态发生变化时,所有依赖它的对象都将得到通知并自动更新(主题 具体主题 观察者 具体观察者)
- 迭代器(x):提供一种方法顺序访问一个聚合对象中的各个元素,而不需要暴露该对象内部表示(集合 具体集合 迭代器 具体迭代器)
- 备忘录(x)
- 状态:允许一个对象在其内部状态发生改变时改变它的行为,对象似乎修改了它的类(环境 抽象状态 具体状态)
- 结构型:设计如何组合类与对象以形成更大结构和类有关的结构型模式涉及如何合理地使用继承机制和对象有关的涉及如何合理地使用对象组合机制
- 装饰:动态地给对象添加一些额外的职责,就功能来说装饰模式更为灵活(组件 具体组件 装饰 具体装饰)
- 外观:为系统的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使这一系统更加容易使用(子系统 外观)
- 适配器:将一个类接口转化成客户所需要的另外一个接口(被适配者 目标 适配器)