设计模式
按设计模式的 目的 分成三类 #incremental #card
[[创建型模式]] :<-> 主要用于封装对象的实例化过程,隐藏具体类名与创建细节
[[结构型模式]] :<-> 强调类和对象的组合方式
[[行为型模式]] :<-> 侧重对象之间的交互与职责分配,不涉及实例化
按设计模式的 范围 分成两类 #incremental #card类设计模式
对象设计模式
策略模式
抽象策略类
具体策略类
环境类
- 策略类的引用
单例模式: 创建型 模式,提供创建对象的最佳方式
一个单一类,该类创建自己的对象,同时确保只有单个对象被创建。
这个类提供一个访问其唯一对象的方式,可以直接访问,不需要实例化该类对象
1 | class Singleton { |
适配器模式: 结构型 模式,将一个类的接口转换成客户希望的另一个接口
目标接口 Target
适配者类 Adaptee
适配器类 Adapter
- 把适配者接口转换成目标接口
状态模式:判断逻辑提取到不同的状态对象中,允许状态对象在内部状态发生改变时改变其行为
环境类角色 Context
- 内部维护当前状态,并负责具体状态的切换
抽象状态角色 State
- 定义一个接口,封装环境对象中的特定状态所对应的行为
具体状态角色 Concrete State
- 实现抽象状态对应的行为,并且在需要的情况下进行状态切换
观察者模式:多个对象间存在一对多的依赖关系,当一个对象状态发生改变,所有依赖于它的对象都得到通知并被自动更新。
抽象主题 Subject
- 保存观察者对应的聚集类和增加、删除观察者的方法,通知所有观察者的抽象方法
具体主题 Concrete Subject
- 实现抽象目标中的通知方法
抽象观察者 Observer
- 更新自己的抽象方法,接到具体主题的更改通知时被调用
具体观察者 Concrete Observer
- 实现抽象观察者中定义的抽象方法
建造者模式
将一个复杂对象的构造与它的表示分离,使同样的构建工程可以创建不同的表示。
产品 Product
- 多个组成部件的复杂对象
抽象建造者 Builder
- 一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法。getResult
具体建造者 Concrete Builder
- 具体实现
指挥者 Director
- 调用建造者对象中的部件构造于适配方法完成复杂对象的创建。
装饰器模式, 结构型 模式
在不改变现在对象结构的情况下,动态给该对象增加一些额外功能。
抽象组件 Component
- 定义一个抽象接口以规范准备接收附加责任的对象。
具体构件(ConcreteComponent)
- 实现抽象构件,通过装饰角色为其添加一些职责。
抽象装饰(Decorator)
- 继承抽象构件,并包含具体构件的实例,可以通过其子类扩展具体构件的功能。
具体装饰(ConcreteDecorator)
- 实现抽象装饰的相关方法,并给具体构件对象添加附加的责任。
备忘录 Memento 行为型模式 ,用于保存和恢复对象的状态
flyweight 享元
- 享元是可共享的对象,可以同时在多个上下文中使用。
[[Ref]]
[[冒号课堂]]
设计模式-可复用的面向对象软件元素
- 如果没有时间将前言看完