对象的UI特定属性

时间:2009-02-20 05:15:56

标签: design-patterns

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

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

之类的东西
List<Category> list = CategoryLogic.GetCategories();

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

对于这么小的事情来说,这似乎有点过分,但这是我能想到的唯一方式。我可以减少使用继承所需的新代码量,但是我仍然会查看至少2个新代码文件(UICategoryLogic和UICategoryItem),如果类别发生更改,可能需要更改这些代码文件。

更不用说我的UI在不同的地方使用不同类别的情况,每个地方都有一些独特的属性。我可以很快为每个目的最终提供不同类别的类加载,并且它可能使代码难以遵循。此外,我可能会使用像数据集这样的东西,这些数据集不容易被继承,或者我可能正在使用ORM来使类难以继承和扩展。

这种情况是否存在一般模式,我需要扩展基本数据项目以满足我的需求?

2 个答案:

答案 0 :(得分:1)

转发继承kool-aid,组成是你的朋友。保留你的Category类并将其封装在更适合你的目的的地方。

答案 1 :(得分:1)

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