【发布时间】:2011-01-30 22:44:13
【问题描述】:
我正在制作一个程序,其中有一个项目列表。您可以添加新项目,也可以编辑现有项目。用于编辑项目和添加新项目的对话框窗口实际上是相同的,一个小细节发生了变化,一个编辑另一个添加项目,其他几乎没有什么不同。
我想知道拥有两个单独的类还是只拥有一个类来指定对话框是用于编辑还是用于添加的参数是否是更好的设计选择。
我将 C++ 与 Qt 一起使用,但我认为相同的设计选择将适用于任何 OOP 语言/框架。
提前致谢。
【问题讨论】:
我正在制作一个程序,其中有一个项目列表。您可以添加新项目,也可以编辑现有项目。用于编辑项目和添加新项目的对话框窗口实际上是相同的,一个小细节发生了变化,一个编辑另一个添加项目,其他几乎没有什么不同。
我想知道拥有两个单独的类还是只拥有一个类来指定对话框是用于编辑还是用于添加的参数是否是更好的设计选择。
我将 C++ 与 Qt 一起使用,但我认为相同的设计选择将适用于任何 OOP 语言/框架。
提前致谢。
【问题讨论】:
我通常对 CREATE 和 EDIT 模式使用相同的 MVC 类。该模型持有一个标志来指示哪种模式。视图将读取模型中的标志以确定要显示/启用哪些控件等。控制器还将读取模型上的标志以确定在用户提交表单时调用哪个服务层方法(例如更新或创建) .
我发现这是一种更易于维护的解决方案,因为它避免了重复并将逻辑保存在一个地方。即在一个视图中查看逻辑而不是两个,一个控制器中的控制器逻辑而不是两个......
【讨论】:
通常这种事情是通过使用某种标记语言中的模板来组织的(MVC 中的“视图”——通常使用 HTML 或 XML)。我实际上对 Qt 了解不多,但也许你的类实际上表现得像模板。
您可能有 3 个模板:
表单模板将被导入模板 #1 和 #2 中间的某个位置。
【讨论】:
我通常只实现一个编辑对话框。当你想创建一个新项目时,给它一个新的项目来编辑。所有对话框都应编辑私有数据并将其返回。这样客户就可以正确响应 OK/Cancel,而您不必为处理一堆 UNDO 废话而烦恼。
【讨论】: