一个设计问题

时间:2009-10-05 08:45:18

标签: design-patterns

我有什么?

我有以下要求:

  • 搜索数据库并返回TreeNode对象以构建树视图
  • 搜索数据库并返回通用列表以构建图表。
  • 可扩展性应该用于搜索并返回不同类型的对象
  • 数据库非常庞大,性能应该被视为高优先级

我面临什么问题?

我正在尝试为这个问题做一个类设计。这里,搜索方法相同,只有返回类型不同。我很困惑在这里使用哪种设计模式。

有人可以帮助我吗?

提前致谢!

更新-1

搜索逻辑将是相同的,并且提供了API。 API将接受搜索参数并将结果作为DataReader返回(在C#中)。使用阅读器,我需要构建TreeNode,通用列表或将来可能出现的任何其他对象。

我需要设计一个位于业务层的组件来为表示层提供服务。根据用户的选择,搜索结果将显示不同的控件。这些控件需要不同类型的对象来绑定。

3 个答案:

答案 0 :(得分:1)

我真的不明白这个问题。您的要求清单太模糊了。

你的数据库是什么? 你怎么访问它? 那里有什么样的数据? 你在设计什么样的程序? 设计的哪个子部分有问题?


<强>更新

好的,所以我认为你必须设置2种模式。

首先,您需要一种以统一格式从数据库中检索数据的方法。这应该使用[ abstract ] Factory 模式完成。 Factory 只会为获取的数据提供标准容器(您的Reader)。

接下来,您需要一些东西来调整这些统一数据(即 Adapter )。 这只是一组类似仿函数的结构,可以从标准的统一提取数据(从数据库)转换为特定于组件的所需数据。

factory 应保留在业务层中,而适配器应位于表示层中。

答案 1 :(得分:0)

好吧,您命名了您想要实现的一般功能。但是,您没有提到此功能的消费者。使用场景是设计背后的驱动力。因此,为了继续进行设计,您需要指定方案。例如,在策略模式背后的搜索算法中没有任何意义,除非它将被多态地使用。

答案 2 :(得分:0)

我认为您需要查看Factory模式。

接口将从工厂请求树或列表或X Creator,然后创建者将执行搜索并解释DataReader以构造所选的数据类型。