名字看起来类似adapter,事实上完全不同。
两个原则:
1.封装变化点
2.使用对象组合代替继承,防止冗余类。
第一个原则更为重要,明确给出了设计的依据。
例:
作图程序,circle 和tangle继承了sharp。
问题出现:你需要同时考虑在显示屏上画图,或在pda上画图(完全是假设情况)
那么是否需要为每个类增加一个附本?Circle和Circle_pda?这会导致冗余和过多的类。
参照第一个原则,这里有两个变化点 :1是什么图形 2是什么环境(实现的方式)
用Sharp的继承树,记录第一变化点。
用Drawing的继承树,记录第二变化点。
同时在Sharp中,组合Drawing.
原文我并没有仔细看,总之我的直观感觉就是:
一个继承树反映一个变化点,使用组合的方式工作。相当于把设计二纬化,使x轴和y轴的设计能够相对独立。