我有一个非常大的数据类(老实说,它实际上是一个结构),需要以足够不同的方式操作它,所以我不想仅仅将所有的操纵器作为数据类的成员方法来实现。
现在,我已经将机械手设置为单例,或由某个管理器对象持有的小实例化类,并且在初始化期间,我向每个机械手传递一个指向数据类的指针。这很管用,但我觉得有点马虎。
一个复杂的问题是操纵者有状态。操纵者状态的一个例子是线程安全帮助器(互斥/信号量),但是在逻辑上属于操纵者的其他数据成员,所以我认为这个问题不会消失。
所以我想知道,有什么设计模式可以为这种情况提供一个更干净的解决方案吗?
发布于 2013-11-21 15:26:26
工厂模式可以与工厂一起使用,提供一个接受指针或对数据的引用的方法,以及一个指示要执行的操作的值(可能是枚举),然后它选择可以从该操作中筛选的代理并要求它这样做。
至于状态,如果代理的状态是同步的,那么工厂中的单个状态就可以了--如果它们不是,那么工厂可以提供一个方法,以便在发生任何可能改变任何代理的状态并通知所有代理的事件发生时调用。或者,无论是什么导致状态变化的代理本身都可能是观察员。
至于实现状态机--这也是经常使用工厂模式完成的!因此,您可以有一个工厂,其中每个子工厂也是一个观察者。这几乎太可怕了,无法用语言表达。
https://stackoverflow.com/questions/20124480
复制相似问题