面向对象设计模式

面向对象设计模式

flavor wheel

面向对象设计模式

设计模式的定义

面向对象的遵循设计原则的能够抽象出来的都是设计模式。

设计模式用来降低问题的复杂度,不能用来解决技术难点。

什么是设计模式?

  • 每一种模式都描述了一种问题的通用解决方案。这种问题在我们的环境中,不停地出现。
  • 设计模式是一种可重复使用的解決方案。

设计模式的四个部分

  • 模式的名称 - 由少量的字组成的名称、有助于我们表达我们的设计。
  • 待解问题 - 描述了何时需要运用这种模式,以及运用模式的环境(上下文)。
  • 解决方案 - 描述了组成设计的元素(类和对象)、它们的关系、职责以及合作。但这种解决方案是抽象的,它不代表具体的实现。
  • 结论 - 运用这种方案所带来的利和弊。主要是指它对系统的弹性、扩展性、和可移植性的。最终目的是高内聚、低耦合。

常见设计模式

模式 待解问题 元素
策略 --- 1 客户程序 2 策略(接口) 3 策略实现 ---
观察者 通知观察者 1 观察者 1.1 观察者接口 2 被观察者 2.1 集合成员(哪些观察者在观察) ---
适配器 依赖倒置,根据高层定义接口适配不便实现的接口,重新定义函数同时复用已有函数。实现改变,接口不变。 --- 类适配、对象适配
简单工厂 隐藏 bean 创建细节 1 客户程序 2 策略接口 3 策略实现 4 Bean 工厂 是许多其他模式的基础,读取配置来创建 bean 解决了工厂模式的开闭原则问题
单例 在指定作用域内只实例化一个实例 --- ---
组合 树 - 文件系统、菜单 1 策略 2 子组件 3 遍历自身 ---
模板 --- 1 模板方法 2 定义模板方法执行顺序 3 客户程序 实现修改具体的逻辑 ---
装饰器 对现有函数追加功能(编译期) 1 统一接口 2 装饰者 3 被装饰者 装饰者和被装饰者通过构造函数传递,可以互相装饰
MVC --- --- ---
代理 运行期动态赋能。 --- ---
--- --- --- ---

策略模式

适配器模式

工厂模式

单例模式

观察者模式

组合模式

装饰器模式

责任链模式

模板方法模式

代理模式

建造者模式

状态模式

MVC 模式