一个设计模式问题

Kor*_*ran 4 design-patterns

我正在设计一个应用程序,我无法指出相同的正确设计.我脑子里有一个,但它似乎不是GOF模式的一部分,所以我不确定它是否是一个不错的方式.

我的项目从任何可能的15-20个文档创建数据(文档都是相同的类型,但数据可以有很大不同).获得数据后,需要将其格式化为任何支持的4种格式并显示.此外,使问题复杂化,即使文档本身大致分为4-5种类型,也很少有文档(跨这些类别)以类似的方式格式化.

现在,我按以下方式拆分它:

  • 数据创建
  • 数据显示

数据创建创建一个具有通用接口的接口数据对象,可以处理所有这些文档.

数据显示读取数据对象并以所需方式显示.

我的第一个问题是 - 我没有在GOF模式集中看到这样的接口对象.这是一个很好的设计决定吗?

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

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

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

ewe*_*nli 5

不要试图提前推动太硬的模式.弄清楚一些设计,然后尝试揭示其中的模式.模式旨在进行通信,并且可以被视为仅对某些特定关注点可重用.

所以你的广泛问题是你有X文档和Y渲染.

  • 尝试为有意义的文档生成类层次结构.您可以在基类中使用某些逻辑或使用接口
  • 如果你无法找出抽象所有类型的文档的接口,你可以依靠适配器,以及,适应各种文档到给定的接口
  • 要拥有多个渲染器,您可以查看访问者模式,装饰器模式或策略模式,或者只使用简单继承/多态与Y渲染实现相同的接口.这取决于变化的性质.
  • 要根据用例获取正确的渲染器,可以使用工厂嵌入决策和实例化逻辑.

GoF模式的粒度低于您的问题.您必须找出符合您特定要求的设计.如有疑问,请始终选择最简单 /更直观的设计.没有他们一个具有最多的模式和花哨的类层次结构.

我的2美分