1.继承是系统进化的主要手段,设计模式根据讨论方向分为三种,其一,讨论对象与场景的关系,以改善继承,以利于系统进。其二,讨论类的组合,其三,讨论类树的管理。最终目的是为进化中的系统提供代码结构优化的种种便利。
2. 工厂方法,原型,单例实际上是讨论对象与场景的关系。工厂方法实现了类与场景的代码级别的隔离,方便类的独立进化。原型分离了对象的初始化与对象的使用,为两个不同应用场景的交互提供便利,单例实际上从资源的角度限制场景对对象的使用次数。
解释器也是对象与场景的关系,工厂方法生产对象,解释器生产行为,类似于某种配置化,脚本化,为系统提供最到灵活性。
3. 建造者,桥接,组合,外观,享元,责任链,命令,迭代器,中介者,备忘录,观察者,状态,策略,访问者都是在讨论组合。
首先,程序里有数据和方法,或者有一个大类里,有很多方法和数据,一回事。这些东西要根据规则拆分成小类,才能利用实现模块化管理和进化。
其一,根据规模或进化速度拆分,进化速度不同的原有类的组成部分,分出无继承关系若干类,组合起来共同完成某功能。
比如,建造者,属于构造函数体量比较大,策略模式,属于部分方法有更多的变化,享元,干脆是把固定的部分和可变的部分分离开,节省资源。访问者,属于把变化较多的部分提取出来独立进化。
其二, 根据功能进行拆分,达到一些特殊的设计需求,或实现单一职责。当然,分离出来的职责方发育的比较大,职责比较多,也是重要指标。
观察者,观察者与被观察者之间有着不同的需求走向,状态模式,封装状态相关的方法,省略分支语句。命令模式,封装方法的调用。迭代器模式,封装类的数据访问。备忘录模式,封装类的整体context,提供恢复支持。
其三,拆分后会有关系问题。
桥接,直接调用,组合,方便管理,责任链,实现处理流程管线化。中介者模式,使类的关系松耦合。外观模式,把调用方的操作集成化。
4.继承树相关
模板方法,定义框架,子类实现功能。
代理模式,由代理决定使用哪个子类。
装饰器模式,通过继承在调用前后增加一些操作。
适配器实际上是一种广义的继承,应在是场景调用时配合使用的。
前述所有对象 类都可以替换为程序,程序集,进程。