我们最初希望在commmon接口中实现各种方法的策略模式。这些信息将在运行时根据用户输入得到。
事实证明,我们有实现3-5个通用方法的抽象类,并且只剩下一个用于不同实现的方法,即策略。
更新:许多抽象类,我的意思是有6个不同的高级功能,即6个包,每个都有它的接口+ AbstractImpl +(一系列实际的Impl)。
这有什么不好的设计吗?
在以后的扩展性方面,任何负面的观点--我正在准备与老年人一起进行代码/设计评审。
发布于 2011-09-06 10:09:01
不,这绝不是一个糟糕的设计。这是一个模板法模式。
它旨在封装算法步骤的不同行为,这在您的场景中可能是这样的。在许多情况下,策略和模板方法模式形成了很强的组合。您可能有抽象的策略作为框架,并且使用模板方法模式来进行具体的策略。很干净。
它是可扩展的,而且不需要重复代码。当您需要完全不同的东西时,只需使用策略接口来创建一个新的抽象或具体的策略。
发布于 2011-09-06 10:09:03
不,它可以是相当好(取决于细节-这是很难说更多关于你的具体情况的知识)。在抽象基类中统一通用方法实现是非常好的。
根据类中使用单个抽象方法的方式,这种模式可能是模板法而不是策略。也就是说,如果它是由基类中的其他方法调用的,而不是由外部世界直接调用的。
发布于 2011-11-24 13:17:23
模板方法模式使子类通过抽象方法实现特殊的代码,子类继承超类的通用方法。所以我不认为这有很多抽象类,它只是一个抽象类,所有的子类都是实例类。
https://softwareengineering.stackexchange.com/questions/106092
复制相似问题