【问题标题】:Template design pattern - how to "share" implementations?模板设计模式 - 如何“共享”实现?
【发布时间】:2019-09-10 17:19:57
【问题描述】:

正在做一个项目,所以我会尝试概括这一点。

假设我有一个带有抽象方法 method() 的抽象类 A

A有4个子类:BCDE,但 BC 具有完全相同的 method() 实现,以及 D 和 E 具有完全相同的 method() 实现。如何以最大限度地减少重复代码的方式组织代码?

【问题讨论】:

  • 你真的需要使用模板方法吗?您可以有两个 A 的子类 - 每个方法一个。然后你可以让 B 和 C 扩展一个,而 D 和 E 扩展另一个。如果您不想要更多子类并且可以放弃模板方法,则可以采用策略模式:为每个方法制定策略,然后使用相应的策略组合类。

标签: design-patterns ooad


【解决方案1】:

把公共方法放在A 或a 的子类中。在不同的情况下覆盖方法。

【讨论】:

  • 如果我把方法放在A里面,如果有多个子类实现相同,但是和A的不同呢?
  • 您可以将它们放在 Asub1 和 Asub2 中,然后将您想要的子类化
  • Asub1 和 Asub2 也应该是抽象的吗? (A是抽象的)
  • 不管怎样。如果其中之一的实现完成,则使其非抽象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多