2

我有一个由许多类组成的信号处理路径。每个处理类都是较小类的组合,每个类都有自己的参数。

到现在为止,我一直偷懒,把所有的处理参数都存储在一个单独的参数类中。我把它作为friend所有处理类的一个,这样他们就可以直接访问它的数据成员。然而,这使得各个块和参数类之间的耦合非常强,使得设计完全不灵活。

我正在重新设计代码,以便每个小进程都拥有它自己的私有数据成员,以便发挥作用以减少耦合。但是现在,如果加载了一组新参数,我需要一个复杂的方法来设置每个单独的处理块中的所有参数(使用访问器函数)。此方法中的命令将与流程紧密耦合。如何最小化这种耦合?

4

2 回答 2

1

我会建议类似于Context Pattern的东西。在构建流程时,将它们与上下文对象或对象一起加载(您可以为各种流程提供各种上下文)。然后让每个进程从给定的上下文对象中请求和检索必要的参数。这样,您将设置过程参数的责任完全转移到这些过程中。换句话说,进程知道它需要什么参数,因此进程可以从给定的上下文对象中请求它们并直接设置其私有存储的成员。

请注意,上下文模式有多种风格,通常它是相当灵活的概念。

于 2012-05-01T14:17:33.423 回答
1

您可以开发通用上下文(在映射中具有键/值)或从 SpecificContextBase 继承的特定上下文,这些上下文将具有所有进程共有的参数。

GenericContext 的优点是您不必更改它来添加/删除参数,但缺点是访问每个参数的查找成本。

SpecificContext 的优点是访问参数没有查找成本,但缺点是添加/删除参数的修改。至少使用此选项,您应该只需要修改特定于一个进程的具体 Context 类,它不应该影响其他任何东西。

于 2012-05-01T14:33:52.460 回答