我有一个由许多课程组成的信号处理途径。每个处理类都是较小类的组合,每个类都有自己的参数。
到目前为止,我一直懒惰并将所有处理参数存储在单独的参数类中。我将其作为所有处理类的friend
,这样他们就可以直接访问其数据成员。然而,这使得各个块和参数类之间的耦合非常强,使得设计完全不灵活。
我正在重新设计代码,以便每个小进程拥有它自己的私有数据成员,以便减少耦合。但是现在,如果加载了一组新参数,我需要一个复杂的方法来设置每个独立处理块中的所有参数(使用访问器函数)。此方法中的命令将与进程强烈耦合。如何最大限度地减少这种耦合?
答案 0 :(得分:1)
我建议类似于Context Pattern。在构建流程时,使用上下文对象或对象加载它们(您可以为各种流程设置各种上下文)。然后让每个进程从给定的上下文对象请求和检索必要的参数。这样,您就可以将完全设置过程参数的责任转移到这些过程。换句话说,进程知道它需要什么参数,因此进程可以从给定的上下文对象请求它们并直接设置其私有存储的成员。
请注意,Context Pattern有各种风格,通常它是相当灵活的概念。
答案 1 :(得分:1)
您可以开发一个通用上下文(在地图中使用键/值)或从特定上下文继承的特定上下文,这些上下文将具有所有进程共有的参数。
GenericContext的PRO是您不必更改它来添加/删除参数,但CON是访问每个参数的查找成本。
SpecificContext的PRO是访问参数没有查找成本,但CON是添加/删除参数的修改。至少使用此选项,您只需修改特定于一个进程的具体Context类,该类不会影响任何其他进程。