【问题标题】:Low coupling and tight cohesion低耦合和紧内聚
【发布时间】:2011-02-22 11:52:20
【问题描述】:

当然要视情况而定。但是当一个较低级别的对象或系统与较高级别的系统通信时,是否应该首选回调或事件而不是保持指向较高级别对象的指针?

例如,如果我们正在开发一款游戏,我们有一个world class,它有一个成员变量vector<monster> monsters。当monster classworld class 通信时,我应该更喜欢使用回调函数还是应该在怪物类中拥有指向世界类的指针?

【问题讨论】:

  • 世界对象是单个实例吗?如果是这样,您可能希望使用单例模式。
  • 如果低耦合是一个问题,您可能不想要单例。单例允许从任何地方进行耦合。

标签: c++ coupling


【解决方案1】:

出于您提到的原因并避免相互/循环依赖,通常最好使用回调与更高级别的类进行通信。

在您的情况下,您仍然需要定义什么是较低级别的模块。世界真的需要知道什么是怪物吗?怪物不只是生物或对手吗?怪物不需要某种环境来行动吗?只有你能回答这个问题才能得出一个可行的解决方案。

【讨论】:

  • 是的,怪物只是生物,但问题更笼统,如果我应该使用指针或回调,最好的解决方案是什么。
  • @hidayat:这是答案的第一个(也是主要)部分。我只是想指出,高层应该是什么并不总是很明显。
猜你喜欢
  • 2017-05-09
  • 2010-09-07
  • 2012-12-09
  • 2015-06-28
  • 2018-11-19
  • 2013-12-25
  • 1970-01-01
  • 2022-07-06
相关资源
最近更新 更多