知识卡片

重复代码是发现模板方法模式的信号

普通读书笔记卡 · 1985

内容

悍马H1、H2两个实现类最初各自实现了完全相同的run()方法——这种重复代码本身就是设计警报, 抽象类才是承载子类共性的正确位置。解法是把run()从两个实现类删除,改为在抽象父类中用 普通方法直接实现,按固定顺序调用几个抽象方法。发散:模板方法模式往往不是设计之初规划 出来的,而是发现重复代码后自然重构的结果。

参考来源

- 位置:《设计模式之禅(第2版)》第10章《模板方法模式》(源文件:_epub-src/text/part0042.html) - 结论依据:原文展示HummerH1Model和HummerH2Model最初各自实现了完全相同的run()方法,并明确指出"如果相同的一段代码复制过两次,就需要对设计产生怀疑",随后把run()方法上移到抽象父类中统一实现。 - 原始内容:两个实现类的run()方法都是完全相同的,那这个run()方法的实现应该出现在抽象类,不应该在实现类上,抽象是所有子类的共性封装……在软件开发过程中,如果相同的一段代码复制过两次,就需要对设计产生怀疑。