我有一个GUI类(WinForms)中有很多逻辑的示例。我将对其进行重构,以便在GUI中没有逻辑,而是由单独的类来保存所有逻辑。
这是什么模式?如果我有一个名为AddAddressForm的表单类,那么你会如何称呼保存逻辑的相关文件?AddAddressMediator(不太符合该模式),如果我正在使用WPF,我会称之为ViewModel(但我不是)。
我有一个GUI类(WinForms)中有很多逻辑的示例。我将对其进行重构,以便在GUI中没有逻辑,而是由单独的类来保存所有逻辑。
这是什么模式?如果我有一个名为AddAddressForm的表单类,那么你会如何称呼保存逻辑的相关文件?AddAddressMediator(不太符合该模式),如果我正在使用WPF,我会称之为ViewModel(但我不是)。
MyFormLogic
,它包含了所有表单逻辑,而表单本身只包含了一堆用于操作表单的方法和事件(例如AddButtonClicked
事件和AllItems
集合属性)。MyFormLogic
类变得和之前一样大而混乱,现在我的实际表单类中还有许多额外的无用代码暴露了这些额外的方法和事件。(同时创建窗体的实例也很麻烦)http://msdn.microsoft.com/en-us/magazine/cc188690.aspx
马丁·福勒(Martin Fowler)将原始的MVP模式分为两个模式,监督控制器和被动视图模式,但我仍然喜欢它的原始名称,MVP。这取决于逻辑类型,比如你有条件逻辑并从中创建不同的对象,那么将其分离到一个新类中将指向工厂方法。
2- 如果您的类中有复杂算法,并将其分离到另一个类/ s中,则最可能使用策略模式。
还有很多其他组合也是可能的。
这是模型-视图-控制器(MVC)的架构。在你的例子中,模型是地址,视图是对话框,而控制器则只是将来自对话框的事件传递给地址对象。
注意:在非常简单的情况下,您可以省略控制器,但如果您想要自动化单元测试,请不要这样做;通过接口进行分离将会带来回报。
听起来像是通过将视图和功能分别放在不同的文件中来实现基本的关注点分离。我不确定它是否真正属于任何一种模式,但它确实让我想起了 Web 表单,因为它有视图和代码后台。