gpt4 book ai didi

design-patterns - 一个设计模式问题

转载 作者:行者123 更新时间:2023-12-04 07:12:40 24 4
gpt4 key购买 nike

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

我的项目从任何可能的 15-20 个文档中创建数据(这些文档都是同一类型,但数据可能有很大差异)。获取数据后,需要将其格式化为支持的 4 种格式中的任何一种并显示。此外,更复杂的是,即使文档本身被大致分为 4-5 种类型,但很少有文档(跨越这些分类)以类似的方式格式化。

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

  • 数据创建
  • 数据展示

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

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

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

    正如我之前提到的,只有两个文档以相似的方式格式化 - 跨分类。这里的问题是其他文档 - 应该以类似的方式格式化 - 不是。因此,我发现自己在获取数据的同时在一种情况下克隆了代码,这是我不想要的。

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

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

    最佳答案

    不要试图提前插入太硬的模式。找出一些设计,然后尝试揭示其中的模式。模式旨在进行交流,并且仅可被视为可重复用于某些特定问题。

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

  • 尝试为有意义的文档生成类层次结构。您可能可以在基类中考虑一些逻辑或使用接口(interface)
  • 如果你不知道抽象所有类型文档的接口(interface),你可以依赖适配器,好吧,将各种文档适配到给定接口(interface)
  • 要拥有多个渲染器,您可以查看访问者模式、装饰器模式或策略模式,或者仅使用简单的继承/多态与 Y 渲染实现相同的接口(interface)。这取决于变化的性质。
  • 要根据用例获取正确的渲染器,您可以使用工厂来嵌入决策和实例化逻辑。

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

    我的 2 美分

    关于design-patterns - 一个设计模式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2182190/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com