【发布时间】:2009-06-15 22:04:08
【问题描述】:
我有多个从基类继承的对象,我正在尝试决定用户应该如何编辑它们。有许多通用字段和一些仅适用于每个子类的字段。有没有设计模式来解决这个问题?
我在想我可以为每个网页创建一个网页,或者我可以拥有一个网页并显示/隐藏子类的字段。我能想到每一个的优点和缺点。很高兴知道是否有处理它的标准方法。
【问题讨论】:
标签: asp.net design-patterns inheritance
我有多个从基类继承的对象,我正在尝试决定用户应该如何编辑它们。有许多通用字段和一些仅适用于每个子类的字段。有没有设计模式来解决这个问题?
我在想我可以为每个网页创建一个网页,或者我可以拥有一个网页并显示/隐藏子类的字段。我能想到每一个的优点和缺点。很高兴知道是否有处理它的标准方法。
【问题讨论】:
标签: asp.net design-patterns inheritance
您可以使用并行类层次结构(这本身不是设计模式)。使用这个想法,您将创建一个基本的代码隐藏类来满足您的基类的属性,然后创建从中派生的类以支持必要的 UI 来处理派生类的附加属性。
并行类库可能会导致问题,例如如果您创建一个新的派生类,那么您还必须创建一个新的派生 UI 类等,但是如果您的派生 UI 类很简单,那么这可能不会成为太大的问题。
编辑:
如果这是您走的路线,您可能希望创建用户控件的层次结构而不是页面,然后在运行时将适当的用户控件添加到您的页面。
【讨论】:
我在使用动态标签时很幸运。这个想法是所有常见的字段都放在一个主选项卡上。任何依赖于特定类的内容都会出现在具有相似名称的选项卡上。
在运行时,我决定它是什么对象并显示相应的选项卡。
【讨论】:
类层次结构的相反方法是作曲学派。解决此问题的组合方法是让您为类的基本数据创建一个基本显示控件(通常在组合方案中保存在核心对象中)和专用数据的专用控件(保存在它自己的单独对象)。
这有一些优点和一些缺点。最重要的优点是您有一个无限可扩展的系统,用于在类树中显示常见数据集类型,并且您可以获得正常的组合风格优势 - 更改类的定义往往会分解为更小的编辑,更多的独立单元。最重要的缺点可能是您最终不得不将工作分解为许多子单元,而不是为类及其视觉表示提供一个单一的“优雅”(优雅通常是一种错觉)抽象/序列化。
【讨论】:
【讨论】: