gpt4 book ai didi

c# - 设计模式以适应处理 Winform 功能的两种不同方式

转载 作者:行者123 更新时间:2023-11-30 21:47:15 25 4
gpt4 key购买 nike

我有一个 WinForm,我用它来构建和测试电子邮件通讯。此表单包含许多方法和事件。

我现在正在向我的程序添加一项新功能以允许拆分测试(A/X 测试),因此可以为一个事件创建最多 4 个不同的简报。

因此,我想扩展我的表单以容纳普通新闻通讯和 A/X 新闻通讯。我要在我的表单中添加两种不同的模式。像这样的东西:

private enum CampaignMode { Normal, AxTest };

除了一些控件的可见性会发生变化外,它们在外观上非常相似。

除此之外,几乎所有的方法和事件都有两种不同的处理方式。

我应该使用什么设计模式才能不必创建新的单独表单?

为简单起见,假设我的表单具有以下方法:

  1. 构造函数:可能接收EditMode作为参数
  2. 加载
  3. 创建:按钮点击事件
  4. SetControlViews:基于EditMode设置控件的可见性
  5. MethodA:特定于Normal模式
  6. MethodB:特定于AxTest模式

最佳答案

听起来像 Template Method将是一个很好的候选人。

创建一个基类,负责基本初始化的逻辑,Load()Create()SetControlViews() 和然后使 Method() 成为虚拟的,并根据专门的逻辑在两个派生类中进行重写。此外,每个派生类的构造函数都可以进行一些专门的初始化。

这样你甚至不需要 CampaignMode 枚举(或者 EditMode 如果你想让它们相同的话)。不同派生类的存在说明了不同实体的存在。

关于c# - 设计模式以适应处理 Winform 功能的两种不同方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38606880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com