如果我的应用程序中需要两种模式,我会使用哪种设计模式,以防止丑陋的条件代码? App目前是MVC,但我不想在我的控制器中使用条件代码,除非必须,否则不要为每个视图使用两个控制器。
有什么建议吗?
答案 0 :(得分:4)
每个实现的不同子类,共享功能在公共超类中或使用Template Method pattern。
答案 1 :(得分:2)
也许是State Pattern?
答案 2 :(得分:1)
Abstract Factory或Proxy。您的控制器将包含某种工厂或代理实例,用于检索“模式”并相应地对其进行操作。
答案 3 :(得分:0)
如果没有更多信息,很难肯定地说,但我会建议战略模式。您可以使用相同的控制器,只需交换策略对象即可产生所需的行为变化。
以下是您可能会发现有用的文章: http://www.javaworld.com/javaworld/jw-04-2002/jw-0426-designpatterns.html
答案 4 :(得分:0)
看一下JSR-168,java portlet及其参考实现,它应该与你想要实现的类似。
答案 5 :(得分:0)
这种决定的适当位置是MVC的控制者。我建议你先把它写在那里。如果它确实是重复的,那么可以直截了当地弄清楚如何清理它:你可以将条件逻辑移动到基类中,或者根据语言,可以通过某种过滤器来处理它。您也可以为视图创建一些“工厂”,它可以理解应用程序的“模式”。但从结构上讲,这一切都在控制器中。
你在视图中不想要它是对的。这将是相当混乱的。您可能需要两个版本的视图,一个用于“视图”,另一个用于“编辑”。
最后,这就是控制器的用途。祝你好运!
答案 6 :(得分:0)
在使用PureMVC制作的CafeTownsend演示中,存在类似的情况,其中有两个不同的视图和两个单独的调解器。你绝对不需要条件代码。我不知道你使用的是什么技术和编程语言,但在Flex中,它将是一个带有ListView和EditView作为子项的ViewStack:
创建视图时,按需注册相应的介体。您可以使用以前的链接检查其他实现。