【问题标题】:What design pattern should I use to combine three data sources that communicate in a chain?我应该使用什么设计模式来组合三个链式通信的数据源?
【发布时间】:2020-11-26 06:48:14
【问题描述】:

具体问题:

  1. 针对这个特定问题的最佳设计模式或策略是什么?
  2. 如何防止潜在的级联效应和重写代码?

详情:

我正在开发一个程序,其中包含三个数据源(A、B、C)。 为了从 B 获取数据,我需要来自 A 的信息。 为了从 C 中提取数据,我需要来自 B 的信息。

目前的方法:

说明:

我使用了四个类。处理来自 A、B 和 C 的数据传递的中介类。然后,用于处理提取、格式化、子设置等的 A、B 和 C 的单独类。

流程:

  1. 在中介类中,我实例化类 A、B 和 C。
  2. 我在中介类中运行了一个名为 create_A_files() 的函数。
  3. 然后将 B 需要的来自 A 的数据作为参数传递给 B 的 create_B_files(A_necessary_data) 函数。
  4. 最后,通过 create_C_files(B_necessary_data) 函数从 B 到 C 完成相同的操作。

当前方法的问题:

我正在与级联效应作斗争。我在 A 中所做的任何更改都会传播并导致 B 和 C 中的错误和错误。 因此,我必须回去重写 B & C 以适应 A 的变化。

提前感谢您的帮助! 纳尼亚649

【问题讨论】:

    标签: python oop design-patterns mediator


    【解决方案1】:

    首先,确保您的 3 个部分很好地隔离并被测试覆盖。拥有一个好的测试套件是您可以用来防止更新代码时出现问题的最佳工具。

    那么,想一想:每一块其实都是独立的:

    • A 正在产生一些输出,但并不真正关心它的去向。
    • B 正在处理一些数据,但并不真正关心数据的来源。
    • C 和 B 一样

    现在,我真的不能说如何在 python 中做到这一点,但在 .NET 中,我会首先确定所有部分的正确接口,然后构建一个协调器来处理全局工作流。

    当然还有大量的测试:)

    【讨论】:

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