【问题标题】:UI specific properties on an object对象上的 UI 特定属性
【发布时间】:2009-02-20 05:15:55
【问题描述】:

假设我有一个名为 Category 的简单类,具有属性 Id、Name。我想在 UI 中将这些显示为菜单。但是显示逻辑也受到第三个属性 IsSelected 的影响,我在渲染菜单时必须考虑到该属性。

有很多不同的方法可以实现这一点,例如通过继承或使用部分类。但是我的代码真的有必要从类似的东西改变

List<Category> list = CategoryLogic.GetCategories();

List<UICategoryItem> list = UICategoryLogic.GetCategories(intSelected);

对于这么小的东西,这似乎有点矫枉过正,但这是我能想到的唯一方法。我可以通过使用继承来减少所需的新代码量,但我仍在寻找至少 2 个新代码文件( UICategoryLogic 和 UICategoryItem ),如果类别发生更改,可能需要更改。

更不用说我的 UI 在不同的地方使用不同的类别的情况,每个可能都有一些独特的属性。我很快就会为每个目的使用大量不同类型的 Category 类,这可能会使代码难以理解。此外,我可能会使用不容易继承的数据集之类的东西,或者我使用的 ORM 会使类难以继承和扩展。

在这种情况下,我需要扩展基本数据项以满足我的需求吗?

【问题讨论】:

    标签: design-patterns


    【解决方案1】:

    把继承库倒掉,作文是你的朋友。保留您的 Category 类并将其封装在更适合您目的的东西中。

    【讨论】:

      【解决方案2】:

      UI 开发的“通用模式”是MVC - 模型视图控制器。让您的 Category 对象成为模型的一部分,您的 UI 控件(列表组合框等)成为视图,这些具有选择状态等概念,控制器是执行 UI 控件上的逻辑映射输入以更改模型对象并在必要时更新视图对象以反映更改。

      【讨论】:

        猜你喜欢
        • 2017-02-27
        • 2013-04-09
        • 1970-01-01
        • 2012-03-27
        • 1970-01-01
        • 2021-12-10
        • 1970-01-01
        • 2019-08-22
        • 1970-01-01
        相关资源
        最近更新 更多