C++ C++;“多重”模式;工人阶级“;操作大型数据类的

C++ C++;“多重”模式;工人阶级“;操作大型数据类的,c++,oop,design-patterns,C++,Oop,Design Patterns,我有一个非常大的数据类(老实说,实际上是一个结构),需要以足够不同的方式对其进行操作,而不仅仅是将所有操纵器作为数据类的成员方法来实现 现在,我将操纵器设置为单例,或者一些管理器对象所持有的小型实例化类,并且在初始化期间向每个操纵器传递一个指向数据类的指针。这很管用,但我觉得有点邋遢 一个复杂的问题是操纵器具有状态。操纵器状态的一个例子是线程安全助手(互斥体/信号量),可以从操纵器本身中排除,但是还有其他数据成员在逻辑上属于操纵器,所以我认为这个问题不会消失 所以我想知道,是否有一些设计模式可以

我有一个非常大的数据类(老实说,实际上是一个结构),需要以足够不同的方式对其进行操作,而不仅仅是将所有操纵器作为数据类的成员方法来实现

现在,我将操纵器设置为单例,或者一些管理器对象所持有的小型实例化类,并且在初始化期间向每个操纵器传递一个指向数据类的指针。这很管用,但我觉得有点邋遢

一个复杂的问题是操纵器具有状态。操纵器状态的一个例子是线程安全助手(互斥体/信号量),可以从操纵器本身中排除,但是还有其他数据成员在逻辑上属于操纵器,所以我认为这个问题不会消失

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

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

至于状态,如果代理的状态是同步的,那么工厂中的单个状态就可以了——如果它们不是同步的,那么工厂可以简单地提供一种方法,以便在发生任何可能改变任何代理状态的事件时调用,并通知所有代理。或者,代理本身可以是导致状态变化的任何东西

至于实现一个状态机——这通常也是使用工厂模式来实现的!因此,您可以拥有一个工厂工厂,其中每个子工厂也是一个观察者。这对于文字来说简直太可怕了。

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

至于状态,如果代理的状态是同步的,那么工厂中的单个状态就可以了——如果它们不是同步的,那么工厂可以简单地提供一种方法,以便在发生任何可能改变任何代理状态的事件时调用,并通知所有代理。或者,代理本身可以是导致状态变化的任何东西


至于实现一个状态机——这通常也是使用工厂模式来实现的!因此,您可以拥有一个工厂工厂,其中每个子工厂也是一个观察者。这对于文字来说简直太可怕了。

结构是否需要那么大?或者它是否可以从更易于消化的数据结构中获益?结构已经分解为更小的逻辑部分,但需要大规模操作。例如,一个“操作”可能需要将子数据从一个“较小的逻辑块”移动到另一个。此外,这需要非常快,因此添加多个抽象层是一个不确定的命题。抱歉,但我不清楚复杂的问题是什么,以及需要放弃什么。“结构”是否需要如此大?或者它是否可以从更易消化的数据结构中获益该结构已经分解为更小的逻辑部分,但操纵需要大规模进行。例如,一个“操作”可能需要将子数据从一个“较小的逻辑块”移动到另一个。此外,这需要非常快,因此添加多个抽象层是一个不确定的命题。对不起,但我不清楚什么是复杂的问题以及需要放弃什么。