【发布时间】:2009-11-30 17:25:34
【问题描述】:
我想重构一些代码。
基本上我要重构的代码是一个表单(使用 System.Windows.Forms;)
它现在的设置方式,取决于您选择的单选按钮,它会显示不同的窗口布局:不同的标签、按钮等。并不总是有很大的不同,但会有所不同。这是很多地方的条件语句垃圾。我想用状态模式重构它。主要有三种状态。
我不确定执行此操作的最佳方法。现在 IState 接口有一个 DoAction() 方法,它执行一些特定于唯一状态的操作,以及一个 DrawForm() 方法,它根据当前状态重新绘制表单......但是,要执行 DrawForm(), State 类需要能够访问 Form 的成员变量。这就是让我陷入困境的原因。我真的不想暴露他们。
有没有更好的方法来做到这一点?
【问题讨论】:
-
据我所知,状态模式 DID 要求那些具体的状态类可以访问“上下文”(在您的情况下是表单)。听起来访问这些成员变量是不可避免的。
-
谢谢,我不得不给你的评论一些爱,因为没有一个答案可以支持,哈哈。
标签: c# design-patterns refactoring