知识卡片

模板方法模式颠倒了常规的抽象实现关系

普通读书笔记卡 · 1985.a.3

内容

常规设计是抽象类声明一般属性、实现类完成细节,单向依赖。但[[模板方法模式的两类方法]] 反过来:模板方法的执行结果取决于子类如何实现基本方法,构成”子类影响父类”的反向依赖。 这在复杂项目中会增加阅读难度——必须同时看子类实现才能确定完整行为。发散:可读性成本 集中在”理解一个方法需要跨两个文件”,与[[方法归属的判断原则:是自己的就是自己的]]追求 的”就近理解”存在张力。

参考来源

- 位置:《设计模式之禅(第2版)》第10章《模板方法模式》(源文件:_epub-src/text/part0044.html) - 结论依据:原文指出"按照我们的设计习惯,抽象类负责声明最抽象、最一般的事物属性和方法……但是模板方法模式却颠倒了……子类执行的结果影响了父类的结果……这在复杂的项目中,会带来代码阅读的难度,而且也会让新手产生不适感"。 - 原始内容:抽象类定义了部分抽象方法,由子类实现,子类执行的结果影响了父类的结果,也就是子类对父类产生了影响,这在复杂的项目中,会带来代码阅读的难度,而且也会让新手产生不适感。