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