首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个设计模式问题

一个设计模式问题
EN

Stack Overflow用户
提问于 2010-02-02 06:09:00
回答 4查看 316关注 0票数 4

我正在设计一个应用程序,但我无法指出正确的设计。我有一个想法,但它似乎不是GOF模式的一部分,所以我不确定这是否是一个好的方式。

我的项目从任何可能的15-20个文档中创建数据(文档都是相同类型的,但数据可能有很大差异)。一旦获得数据,就需要以支持的4种格式中的任何一种格式格式化并显示出来。而且,更复杂的是,尽管文档本身被大致划分为4-5个类型,但很少有文档(跨这些分类)以类似的方式格式化。

现在,我把它分成以下几个部分:

  • 数据创建
  • 数据显示

数据创建创建了一个具有公共接口的接口数据对象,该接口可以处理所有这些文档。

数据显示通过数据对象读取并以所需的方式显示它。

我的第一个问题是-我没有在GOF模式集中看到这样一个接口对象。这是一个好的设计决定,拥有这样的东西?

正如我前面提到的,只有两个文档是以类似的方式格式化的--跨分类。这里的问题是,其他文档--本应以类似方式格式化的文档--却不是。因此,我发现自己在一个场景中克隆代码,同时获取数据,这是我不想要的。

所以,我的第二个问题是--什么是处理这件事的最好方法?

如果有人能在这里帮助我,我将非常感激。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-02-02 06:28:35

不要试图提前把模式推得太紧。找出一些设计,然后试图揭示他们的模式。模式是用来交流的,可以被看作是可重用的,只用于某些特定的关注点。

所以你的主要问题是,你有X文档和Y渲染。

  • 尝试为有意义的文档生成类层次结构。您可能可以在基类中考虑一些逻辑,或者使用一个接口。
  • 如果无法找到抽象所有类型文档的接口,则可以依赖适配器将各种文档改编为给定的接口。
  • 要拥有多个呈现器,您可以查看访问者模式、装饰器模式或策略模式,或者只使用实现相同接口的Y呈现的普通继承/多态性。这取决于变化的性质。
  • 要根据用例获得正确的呈现器,可以使用工厂嵌入决策和实例化逻辑。

GoF模式的粒度低于您的问题。您将必须找到一个设计,以满足您非常具体的需求。如果有疑问,一定要选择最简单/更直观的设计。不,它们具有最丰富的模式和奇特的类层次结构。

我的2美分

票数 5
EN

Stack Overflow用户

发布于 2010-02-02 06:24:23

听起来像战略模式,整个应用程序是MVC和退化控制器。

票数 1
EN

Stack Overflow用户

发布于 2010-02-02 06:23:49

您的接口对象可以用门面适配器设计模式来描述。如果没有与现有设计模式直接匹配的话,不要太担心--您所描述的解决方案是最好的方法。

对于第二个问题,您可以使用一个基类来实现所有类所共有的功能。然后把它扩展到所有特殊需要。我知道书籍推荐使用组合而不是继承,但是这不是一个严格的规则,有些情况下继承是一个很好的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2182190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档