设计模式总结

  • 心得

为什么会出现设计模式?

为了应对需求的频繁变化




设计模式的真谛?

让程序在编译时一样, 将变化转移到运行时.
不要通过修改旧代码, 来支持变化的新需求,
而是通过运行时多态, 来支持变化的新需求.




使用设计模式的核心问题?

确定什么时候什么地方应用设计模式.
答案是,
寻找变化点,
在变化点处应用设计模式.




使用设计模式的前提假设?

软件中存在稳定的点.




如果程序的所有步骤都不稳定?

如果所有的步骤都不稳定,
那所有的设计模式都不适用.
或者所有的步骤都稳定,
那设计模式没有意义.




管理变化

设计模式就是在稳定和变化中寻找隔离点, 从而分离他们, 管理变化.




重构到模式

没有一步到位的设计模式, 敏捷开发提倡"重构到模式".




重构心得

静态绑定-------------------->动态绑定
早绑定---------------------->晚绑定
编译时依赖------------------>运行时依赖
继承------------------------>组合
紧耦合---------------------->松耦合





  • 目录

1 组件协作

解决组件之间的协作问题
现代软件的分工特点是"框架与应用"的区分,
组件协作模式, 通过晚绑定,实现框架和应用的松耦合.

  • Template Method (模板方法)
  • Strategy (策略)
  • Observer / Event (观察者/发布订阅模式)


2 单一职责

解决class与class之间的责任划分

  • Decorator (装饰)
  • Bridge (桥)


3 对象创建

解决object创建过程中的依赖关系

  • Factory Method (工厂方法)
  • Abstract Factory (抽象工厂)
  • Prototype (原型)
  • Builder (生成器)


4 对象性能

  • Singleton (单例模式)
  • Flyweight (享元模式)


5 接口隔离

  • Façade (门面模式)
  • Proxy (代理模式)
  • Mediator (适配器)
  • Adapter (中介者)


6 状态变化

  • Memento (备忘录模式)
  • State (状态模式)


7 数据结构

  • Composite (组合模式)
  • Iterator (迭代器模式)
  • Chain of Resposibility (责任链模式)


8 行为变化

  • Command (命令模式)
  • Visitor (访问者模式)


9 领域问题

  • Interpreter (解释器模式)




  • 目录链接

0 七大原则

  • ( 1 ) 开闭原则

https://www.cnblogs.com/crazyctrlc/articles/17779848.html

  • ( 2 ) 单一职责原则

https://www.cnblogs.com/crazyctrlc/articles/17771175.html

  • ( 3 ) 迪米特原则(最少知识原则) demeter

https://www.cnblogs.com/crazyctrlc/articles/17768432.html

  • ( 4 ) 依赖倒置原则 dependency inversion

https://www.cnblogs.com/crazyctrlc/articles/17766492.html

  • ( 5 ) 合成复用原则 composite reuse

https://www.cnblogs.com/crazyctrlc/articles/17768780.html

  • ( 6 ) 接口隔离原则 interface segregation

https://www.cnblogs.com/crazyctrlc/articles/17768789.html

  • ( 7 ) 里氏替换原则 liskov substitution

https://www.cnblogs.com/crazyctrlc/articles/17768792.html


1 组件协作

  • Template Method (模板方法)

https://www.cnblogs.com/crazyctrlc/articles/17759308.html

  • Strategy (策略模式)

https://www.cnblogs.com/crazyctrlc/articles/17759555.html

  • Observer / Event (观察者模式/发布订阅模式)

https://www.cnblogs.com/crazyctrlc/articles/17759856.html


2 单一职责

  • Decorator (装饰)

https://www.cnblogs.com/crazyctrlc/articles/17762183.html

  • Bridge (桥)

https://www.cnblogs.com/crazyctrlc/articles/17763467.html


3 对象创建

  • Factory Method (工厂方法)

https://www.cnblogs.com/crazyctrlc/articles/17783823.html

  • Abstract Factory (抽象工厂)

https://www.cnblogs.com/crazyctrlc/articles/17783846.html

  • Prototype (原型)

https://www.cnblogs.com/crazyctrlc/articles/17786424.html

  • Builder (生成器)

https://www.cnblogs.com/crazyctrlc/articles/17786914.html


4 对象性能

  • Singleton (单例模式)

https://www.cnblogs.com/crazyctrlc/articles/17855118.html

  • Flyweight (享元模式)

https://www.cnblogs.com/crazyctrlc/articles/17855134.html


5 接口隔离

  • Façade (门面模式)

https://www.cnblogs.com/crazyctrlc/articles/17856496.html

  • Proxy (代理模式)

https://www.cnblogs.com/crazyctrlc/articles/17856497.html

  • Mediator (适配器)

https://www.cnblogs.com/crazyctrlc/articles/17856499.html

  • Adapter (中介者)

https://www.cnblogs.com/crazyctrlc/articles/17856501.html


6 状态变化

  • Memento (备忘录模式)

https://www.cnblogs.com/crazyctrlc/articles/17871336.html

  • State (状态模式)

https://www.cnblogs.com/crazyctrlc/articles/17871337.html


7 数据结构

  • Composite (组合模式)

https://www.cnblogs.com/crazyctrlc/articles/17875990.html

  • Iterator (迭代器模式)

https://www.cnblogs.com/crazyctrlc/articles/17875994.html

  • Chain of Resposibility (责任链模式)

https://www.cnblogs.com/crazyctrlc/articles/17875999.html


8 行为变化

  • Command (命令模式)

https://www.cnblogs.com/crazyctrlc/articles/17889395.html

  • Visitor (访问者模式)

https://www.cnblogs.com/crazyctrlc/articles/17889397.html


9 领域问题

  • Interpreter (解释器模式)

https://www.cnblogs.com/crazyctrlc/articles/17889398.html




posted @ 2023-12-12 01:50  qwertzxc  阅读(5)  评论(0)    收藏  举报