请考虑一个程序,用户从列表中选择一个算法,并使用策略模式将该算法设置为模型的操作。
例如,图像处理应用程序。有许多算法可以用来操纵图像(暗、亮、对比度等)。它们都封装在对象中,控制器将模型设置为使用此列表中的算法。这些算法还需要在UI上以名称表示。
这就是它的工作方式:
用户可以从GUI上的列表中选择一个算法。当他/她这样做时,会通知控制器,并在模型中设置合适的算法。稍后,当模型被称为model.operate()时,它将把操作委托给它当前的算法。经典策略模式。
此外,视图需要访问算法的名称,以便允许用户从列表中选择一个。
我的问题是:
如果答案是,将算法存储在某处是好的--而不是在哪里?
在模型中?-这是有意义的,因为模型封装了应用程序的业务逻辑和数据。但是视图将如何获取算法的名称?
在控制器中?-这是有意义的,因为控制器是在模型中设置算法的控制器。同时还可以为视图提供一个方法getAlgorithmNames()。但从技术上讲,它不应该包含业务逻辑对象,这就是算法的本质。
在另一个类中,有兴趣的人可以从哪里获取算法或他们的名字?
我确信,在很多应用程序中,用户选择一个操作,并在模型中设置了适当的算法。其他应用程序是如何做到这一点的?
发布于 2014-05-08 14:13:46
为了避免可能的误解,在MVC模式中,模型部分不包含单个类,而是包含所有未与用户接口的类。
简单地说:
现在请回答你的问题:
算法和它们的名称列表属于应用程序的Model部分。
算法本身是业务逻辑的一部分,因此属于模型中。如果该模型正在维护一组算法,那么该模型也可以同时为Controller和View提供可用算法列表,这是很自然的。
从列表中选择可以以两种方式工作:
https://softwareengineering.stackexchange.com/questions/238392
复制相似问题