在我不断寻求掌握各种设计模式的过程中,我遇到了“状态”设计模式。
首先,让我解释一下我试图在哪里使用这种模式。我有一个表格,我想申请状态。我的程序具有三种状态:Configuration、Processing 和 ProcessingComplete。当表单更改状态时,表单的各个组件将变为启用/禁用、可见/不可见等。
根据我对状态模式的理解,所有这些更改(使组件可见/不可见、启用/禁用等)都应该发生在包含表单实例的单独类中。如果各个State 类与Form 的类分开,State 类就不能访问Form 的组件。我觉得这让我有两种选择之一:
- 将表单的组件公开
- 使 State 类成为 Form 的内部类
我觉得选项(1)是不好的形式,但我觉得选项(2)在某种程度上违反了状态模式的精神。我的另一个想法是使用选项(2)但使用部分类实现,但是我仍然觉得它违反了状态模式的精神。
我对这两种选择的感受是不公平的,还是我什至没有想到其他选择?