设计模式大杂烩 VectorX

[TOC]

设计模式大杂烩

1、概念性知识

设计模式终极目标(世界观)

  • 高内聚、低耦合
  • 易扩展、易维护

设计模式核心思想(方法论)

  • 组合聚合代替继承
  • 面向接口编程

颗粒度

  • 颗粒度:系统结构功能的分解细化程度、复杂对象的分解程度

如何把握“度”

  • 权衡各种因素,适当颗粒化,使系统处于合适的颗粒度

单一职责

要使得系统功能专业而单一,降低对象与对象之间、各个功能模块之间的依赖和耦合

  • 软件的每一个操作过程不要太过复杂,否则不便于系统的维护和解耦
  • 软件结构或操作过程不能太细化,否则造成系统各部件之间的频繁调用,运行效率降低

无方法接口的作用

  • 标示

重构原则

  • 抽象类应当拥有竟可能多的行为,应当拥有尽可能少的数据

“好莱坞”原则

don‘t call us, we‘ll call you

不要打电话给我们,我们会打电话给你

这是著名的“好莱坞”原则。在好莱坞,把简历递交给演艺公司后就只有回家等待。由演艺公司对整个娱乐项的完全控制,演员只能被动式的接受公司的差使,在需要的环节中,完成自己的演出

模板方法模式充分的体现了“好莱坞”原则。IOC的原理就是基于好莱坞原则,所有的组件都是被动的,所有的组件初始化和调用都由容器负责

允许底层组件将自己挂钩到高层组件的算法过程中,什么时候调用,则是按照高层的处理逻辑决定,有效避免了系统环状依赖

开闭原则如何实现?

  • 面向抽象/接口编程:也是依赖倒转原则,多用抽象类和接口
  • 封装变化部分

符合设计原则的典型设计模式

  • 单一职责原则:状态模式
  • 依赖倒转原则:桥接模式
  • 接口隔离原则:备忘录模式
  • 迪米特法则:外观模式、中介者模式、命令模式

2、设计模式补充

原型模式

  • 实现Cloneable接口,重载clone方式产生新对象时,不会执行类的构造方法

备忘录模式

  • 白箱备忘录模式:普通的方式,即只有一个备忘录具体类
  • 黑箱备忘录模式:定义一个备忘录窄接口,备忘录具体实现类作为私有内部类调用,并且备忘录类中所有属性和方法均私有化,不对外暴露;同时备忘录管理者只接收窄接口

弥补老系统缺陷的设计模式

老系统代码,一般不轻易改动原代码,这时候需要对老系统做功能扩展,如下设计模式应运而生

  • 适配器模式
  • 外观模式
  • 代理模式

双向耦合的设计模式

你中有我、我中有你:即一个对象持有另一个对象,另一个对象也持有该对象的情况。当然,为了解耦,一般是接口或抽象类之间相互持有

  • 中介者模式、观察者模式、访问者模式、状态模式

常用的设计模式必知必会

  • 创建型模式:单例模式、工厂方法模式、抽象工厂模式
  • 结构型模式:外观模式、代理模式
  • 行为型模式:模板方法模式、状态模式、策略模式