【问题标题】:Is the factory pattern what I need?工厂模式是我需要的吗?
【发布时间】:2016-02-02 00:06:55
【问题描述】:

我只是想在开始构建某些东西之前弄清楚我的想法。我正在构建一个进口商,进口商将始终接受以下数据:

[SKU、名称、颜色]

但是,由于供应商的原因,发送到导入器的数据可能会使用不同的列名和不同的文件格式(CSV 或 excel 以及其他)。那么我是否需要创建某种映射器来表示 X 列意味着我的数据库中的 X 列?

我认为最好的方法是构建一个接口,然后每个供应商都有自己的实现,其中包含一个列名映射器,然后使用工厂模式来构建最终对象。

我可能完全错了,那么有没有人有过构建这样的东西的经验,你用了什么?

谢谢 奥利

【问题讨论】:

  • 加上 243 个其他意味着你要硬编码 243 个属性!?!?!?!
  • 嘿,为了方便起见,我刚刚删除了那部分。我基本上是想说我还有 243 个其他属性可以映射
  • 那么,你需要两个映射:列和文件格式?
  • 我需要一个原始列名和一个导入的列名,它将导入的数据映射到正确的列名

标签: design-patterns optimization


【解决方案1】:

工厂可以很好地解决您的情况,但恕我直言,它不会考虑两个地方的变化:源和列。如果您只有一个潜在的更改位置,那么工厂很棒。但是如果你有两个地方(数据源和列),可以考虑抽象工厂。我可以针对您的情况提出的另一种解决方案是将桥与 ISourceImporter(用于 Excel、csv、其他来源)和 IMapper(用于不同的列组合)一起使用。它将使您可以轻松添加新的源导入器并轻松添加新的列组合。恕我直言,桥将是更好的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多