Kri*_*ato 6 c++ design-patterns hierarchy observer-pattern
建模的问题是:
一个层次的层次结构Army,从整个国家军队开始,通过野战军队,子单位,最终是个人.每个级别都可能涉及链接到一个或多个其他类,如General或Officer或什么的.一支野战军队中的单位需要能够相互沟通,特别是为了建模士气,凝聚力等,以及任何敌军野战军队(例如我军队中的单位路线影响敌人的士气)正).此外,每个单元需要与层次结构中的上下相关联(为了明显的目的).
我想在这些实体的army*每个类中(例如在每个单元中unit*或每个军队中它们的整个集合中)都用实际指针(可能是双边)表示物理层次结构中的链接,然后利用观察者设计在其他情况下(例如我上面提到的情况)实现任何通信的模式.
但是,由于不是设计模式或编程方面的专家,我不知道是否还有其他更有效的方法来做到这一点.任何帮助将不胜感激.
有一种模型/设计模式用于在不同实体之间通信事件,这些实体在通信发生之前可能不知道彼此的存在。该模式称为“发布/订阅”。
每个实体将其想要发布的事件发送给代理,并告诉代理它会对哪些类型的事件感兴趣。代理负责确保订阅实体了解他们感兴趣的已发布事件。
这类似于观察者模式,但在观察者模式中,每个感兴趣的实体单独订阅它想要从中获取事件的每个实体。我认为这可能会导致大量开销,因为这需要每个人都关心事物的创建和销毁。
不管怎样,维基百科上有一篇关于发布/订阅的很好的文章。
我会为各个军队使用复合模式(基本上意味着某种形式的树)。也可能是上下关系或兄弟姐妹关系的观察者。但是 Observer 需要太多的注册和注销操作才能在一般情况下工作。