哪种设计模式可以轻松添加新算法?

时间:2012-02-21 17:56:11

标签: java design-patterns

我正在尝试解决我必须使用哪种设计模式来解决这个问题:

我有计算机和算法课程

1)可能有很多计算机实例

2)每台计算机只能有一个算法实例

3)算法是某种抽象,它应该有一个空洞“计算”

4)具体算法在ConcreteAlg1类,ConcreteAlg2等类中,因此可能有很多不同类别的具体算法

我的目标是创建一个计算机实例,我在其中创建新的ConcreteAlg235实例,而不知道添加了一些类ConcreteAlg235。因此,我的目标是轻松创建新的算法类,并在类计算机的实例中创建其实例,而无需编辑类Computer的代码。

想想这就像我想要做一些专有软件并给用户添加新算法的机会,以及为自己轻松维护源代码。

感谢您提出任何想法

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:1)

算法的Command pattern怎么样?通过这种方式,您可以确保在实例化计算机时,您将期望使用execute方法实现Command接口(可以重命名为更合适的方式)

答案 2 :(得分:0)

策略和命令模式相似但不同。策略模式允许您将特定算法的实现交换进出。您在这里寻找的是命令模式,具体类实现了一个通用接口。您可以将一个公共方法添加到Computer类并添加到内部持有的命令列表中进行处理...但是您决定修改每个计算机的这个算法列表取决于您,但这是一种方法,并且是非常简单。