1

我有一些相当复杂的表单,需要由网页设计师配置。

我一直在构建一些似乎正在完成这项工作的复合控件。

顶层控件只是一个容器,表单的各个部分都包含在其中。SubControls 实现通用接口,(即 NeptuneAddressControl 和 MarsAddressControl 实现 IPlanetaryAddressControl)

最终,一切都需要进入同一个数据库。

我不是将子控件的每个字段都公开为父控件中的道具,而是考虑实现一个跨越控件树的访问者,并填充一个实体对象,然后可以写入数据库。

这是正确的方法还是我离这里很远?

4

1 回答 1

1

我认为使用属性映射和访问者之间的权衡是实现访问者需要了解所有可能属性的类,而处理映射的代码可以独立于表单/数据库的内容。

有了访问者,当新类型的数据添加到结构中时,您的代码无法编译,因此编译器可以在您更改复杂结构时为您提供帮助。

如果稍后添加新字段或控件,属性的好处可能会导致代码量更少,根本不需要更改中间层,具体取决于您可以使该代码的通用程度。

我想还有其他选择,但我认为访问者方法是有道理的。您可能想要做一些特定于控制的事情,比如专门的验证,这将更难通用编码,因此任务会更容易,并且应该很好地防止由于控制结构的变化而导致的隐藏错误。

于 2008-12-31T15:50:00.160 回答