设计模式不是银弹,它不能解决所有问题,它甚至跟设计都沾不上边--设计模式只是解决特定类型问题的特定方法,换句话说,设计模式不是用来让你学习如何设计代码,而是如何解决问题的“方法论”。评判解决方法好坏的核心指标只有一个:是否对扩展开放,对修改关闭。
扩展的方式基于对问题的理解,解决问题的关键在于分离问题中的变和不变,让变和不变解耦才是设计模式的最终目的,创建型设计模式分离了对象的创建和使用,结构型设计模式分离了功能和实现,行为型设计模式分离了调用者和被调用者之间的关系。然而不幸的是,变和不变并不是永恒不变的,只能在现有的情况下做出最适合的方案--然后在适当的时候重构。
在这里,我会按照以下结构介绍每一种设计模式:
- 标题
- 描述场景
- 第一版代码
- 分析存在的问题
- 解决问题和实现代码
- 代码目录