gpt4 book ai didi

c++ - 使用什么设计模式?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:29:21 25 4
gpt4 key购买 nike

建模的问题是这样的:

陆军中的层级结构,从整个国家军队开始,通过野战军、分队,最后是个人。每个级别可能涉及到一个或多个其他类别的链接,例如 GeneralOfficer 或其他任何类别。说野战军中的单位需要能够相互通信,特别是为了模拟士气、凝聚力等,以及与任何敌军野战军的单位(例如,我军中的一个单位溃败会影响敌人的士气积极)。此外,每个单元都需要与层次结构中位于其上方和下方的单元进行通信(出于显而易见的目的)。

我正在考虑让物理层次结构中的链接由每个实体类中的实际指针(可能是双边的)表示(例如,每个单位中的 army*unit* 或每个军队中的整个集合),然后利用观察者设计模式来实现其他情况下的任何通信(例如我上面提到的情况)。

但是,作为设计模式或编程方面的专家,我不知道是否有任何其他更有效的方式来做到这一点。任何帮助将不胜感激。

最佳答案

有一种模型/设计模式可用于在不同实体之间进行事件通信,这些实体在通信发生之前可能不知道彼此的存在。该模式称为“发布/订阅”。

每个实体都将它想要发布的事件发送给代理,并告诉代理它会感兴趣的事件类型。代理负责确保订阅实体了解他们认为感兴趣的已发布事件。

这类似于观察者模式,但在观察者模式中,每个感兴趣的实体都单独订阅它需要事件的每个实体。我认为这可能会导致大量开销,因为这需要每个人都关心事物的创建和销毁。

反正有a nice Wikipedia article on Publish/Subscribe .

我会使用 Composite单个军队的模式(基本上是指某种形式的树)。也可能是上下级关系或与 sibling 的观察者。但是 Observer 需要太多的注册和注销才能在一般情况下正常工作。

关于c++ - 使用什么设计模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3129096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com