用于操作大型数据类的多个“工作类”的C ++模式

时间:2013-11-21 15:05:29

标签: c++ oop design-patterns

我有一个非常大的数据类(实际上是一个结构,老实说),需要以足够不同的方式进行操作,我不仅希望将所有操纵符实现为数据类的成员方法。 / p>

现在,我将操纵器设置为单例,或者由某个管理器对象保存的小实例化类,并且我在初始化期间向每个操纵器传递指向数据类的指针。这有效,但对我来说感觉有点草率。

一个复杂的问题是操纵者有状态。可以从操纵器本身中分解的操纵器状态的一个示例是线程安全帮助程序(互斥锁/信号量),但是其他数据成员在逻辑上属于操纵器,所以我认为这个问题不会消失。 / p>

所以我想知道,是否有一些设计模式可以为这种情况提供更清晰的解决方案?

1 个答案:

答案 0 :(得分:1)

A factory pattern可以与工厂一起使用,提供一个获取指针或数据引用的方法,以及一个指示要执行的操作的值(可能是枚举),然后选择可以执行该操作的代理并要求它这样做。

至于状态,如果代理的状态是同步的,那么工厂中的单个状态就可以了 - 如果不是,那么工厂可以简单地提供一种方法,以便在发生任何可能发生变化的情况下进行调用任何代理人的状态并通知所有代理人。或者,代理人本身可能observers无论是什么导致状态变化。

至于实现状态机 - 这通常也是使用工厂模式完成的!所以你可以拥有一个工厂,每个子工厂也是一个观察员。对于单词来说,这几乎太棒了。