这几天瞄了几本设计模式的书,没有细看具体模式啦,而是老是琢磨那些深奥无比的话。这些话经常出现在计算机的书籍中,很有禅意,也有哲理。听说,高手就喜欢写点这样的话。
还有就是细心体味了一下OO的设计原则,这些原则是凌驾于模式之上的,也就是更宏观的原则。
其中,最高指导的一个就是“开-闭”原则。别的原则,里氏代换原则、依赖倒置原则、组合/聚合复用原则和迪米特法则都是为了达到“开-闭”原则而出现的规则。
这些原则告诉我很多东西,聚焦于一点就是要“面向抽象”来做一切事情。
分析对象的时候,要多分析设计“抽象”的概念,对象之间的联系要多基于抽象的概念而不是具体,这样具体才能能够变化,这样才是开闭。用我自己的话就是要“游走于 抽象”。
这里有一个我必须记住的就是,在封装变化时候,多用聚合/组合,少用继承。在封装原子变化并且是同类型对象时才用继承,别的都尽量用聚合/组合。而且尽量不要用多级继承,多级继承一般意味着有两种变化脉络,可能的话,让两种变化脉络独立演化。很明显,一独立演化,又要聚合/组合了。
还有一个必须记住的是:运用抽象以后,客户端的使用发生了巨大的变化。不再是指那儿用那儿。而是要做更多的准备工作,因为运用抽象,本身就把具体“组合”的职责推迟到使用的阶段。那谁使用,肯定是客户端。所以,客户端的使用要革新。要习惯用工厂,习惯把一系列的抽象定具体了,并按照一定方式“组合”起来用。而且,最终要善于用接口来调用方法。
用小飞推荐的一个工具画了个图,如下:
MARCO ZHANG 2006年2月27日7:18:57