这是哪种重构模式?

3

我有一个GUI类(WinForms)中有很多逻辑的示例。我将对其进行重构,以便在GUI中没有逻辑,而是由单独的类来保存所有逻辑。

这是什么模式?如果我有一个名为AddAddressForm的表单类,那么你会如何称呼保存逻辑的相关文件?AddAddressMediator(不太符合该模式),如果我正在使用WPF,我会称之为ViewModel(但我不是)。

9个回答

2
听起来有点像模型-视图-控制器,但没有模型部分。

2
没有 Model,MVC 怎么可能实现? - TalentTuner

2
我认为它并没有一个特定的名称。我曾经在Windows Forms中尝试过这种做法,但很不幸地并没有奏效:
对于每个表单,我都有另一个类,名为MyFormLogic,它包含了所有表单逻辑,而表单本身只包含了一堆用于操作表单的方法和事件(例如AddButtonClicked事件和AllItems集合属性)。
当时这似乎是个绝妙的主意(哎呀易于单元测试!),但实际上MyFormLogic类变得和之前一样大而混乱,现在我的实际表单类中还有许多额外的无用代码暴露了这些额外的方法和事件。(同时创建窗体的实例也很麻烦)
我建议您尝试将尽可能多的逻辑重构为许多只做1件事情的小类,而不是处理所有表单逻辑的1个额外类(如果没有一些示例,很难解释我的意思)。

2

从给出的示例来看,你的对象似乎共享某种公共数据。

看一下享元模式


2

1

这取决于逻辑类型,比如你有条件逻辑并从中创建不同的对象,那么将其分离到一个新类中将指向工厂方法。

2- 如果您的类中有复杂算法,并将其分离到另一个类/ s中,则最可能使用策略模式。

还有很多其他组合也是可能的。


1

这是模型-视图-控制器(MVC)的架构。在你的例子中,模型是地址,视图是对话框,而控制器则只是将来自对话框的事件传递给地址对象。

注意:在非常简单的情况下,您可以省略控制器,但如果您想要自动化单元测试,请不要这样做;通过接口进行分离将会带来回报。


1

1
你所描述的仍然是Model-View-ViewModel模式,这并不特定于WPF。其核心原则是ViewModel包含状态和逻辑,而View不断地与ViewModel同步。这在WPF绑定中非常好用和容易,但它们并不是必需品;任何有状态的UI都可以利用MVVM。该模式的Forms版本在视图方面可能会变得相当冗长。

0

听起来像是通过将视图和功能分别放在不同的文件中来实现基本的关注点分离。我不确定它是否真正属于任何一种模式,但它确实让我想起了 Web 表单,因为它有视图和代码后台。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接