知识卡片
从多接口到单一抽象类的逐步精简过程
内容
组织架构树设计经历三轮重构:初版给根/树枝/叶子各定义接口但方法几乎重复;第二轮合并出 公共接口ICorp;第三轮发现接口本身也多余,直接把公共字段和方法收进一个抽象类Corp。发散: 这提示”看到几个接口方法高度雷同就该合并抽象”的信号不该只停在第一层,第一次合并出的抽象 也要重新审视是否还能进一步精简。
参考来源
- 位置:《设计模式之禅(第2版)》第21章《组合模式》(源文件:_epub-src/text/part0094.html)
- 结论依据:原文展示三轮重构:IRoot/IBranch/ILeaf三接口版本→合并出ICorp公共接口版本→精简为单一抽象类Corp版本,并指出"getInfo每个接口都有,为什么不能抽象出来?Root类和Branch类有什么差别?"这一系列追问推动了逐步精简。
- 原始内容:getInfo每个接口都有,为什么不能抽象出来?Root类和Branch类有什么差别?……你一看这个图,乐了。能不乐嘛,减少很多工作量了,接口没有了,改成抽象类了,IBranch接口也没有了,直接把方法放到了实现类中了,太精简了!