0

我完全是菜鸟,我正在研究设计模式,我想知道哪种更优雅的方式可以使用 c++ 或 java 或 c# 在 2 个对象之间共享数据/变量

我有一个简单的类层次结构,比如 http://s1285.photobucket.com/user/wandersonp/media/share_data_between_2_objects_zpsd9a626d0.jpg.html

例如,如何将 Hero 对象与 Monster 以及 Monster 与 drop_loop 对象进行通信

谢谢

万德森

4

3 回答 3

1

您可能想要使用这种Mediator模式,它可以调解两个对象之间的交互,例如英雄和怪物。见http://en.wikipedia.org/wiki/Mediator_pattern

Observer通常用作一个类将事件传递给其他感兴趣的类的一种方式,而不需要由中介引起的类之间的耦合。请参阅http://en.wikipedia.org/wiki/Observer_pattern

于 2013-08-14T03:01:25.547 回答
1

如果我的解释正确,您正在寻找一种方法,让某些英雄实例能够获得怪物通过 Drop_Loot 掉落的战利品。

我想不出比这更简单的选择:

  • 英雄可以攻击任何怪物
  • 怪物可以被任何英雄攻击
  • 怪物可以掉落战利品到它的位置
  • 英雄 CanPickUpLoot 从任何位置

有很多方法可以实现这一点,但它会消除英雄和怪物之间不涉及战斗的其他类型互动的需要。

于 2013-08-14T03:10:04.720 回答
0

您需要提供有关您打算如何处理这些数据的更多信息。

仅基于您的问题,只需将您想要的任何对象作为参数传递给您想要的任何其他对象的方法/成员函数,例如(Java):

Hero hero = ...;
Monster monster = ...;
DropLoot loot = ...;

monster.doSomething(hero);
hero.doSomethingElse(loot); 
monster.doWhatever(loot);

但是,最重要的是:鉴于您提供的信息,这个问题无法回答。共享数据时使用的“正确”“模式”取决于数据的性质、您打算如何使用它以及它如何适合您的整体应用程序架构。使用最好的工具来完成这项工作。保持代码简洁、清晰和可维护。仅仅为了使用“模式”而使用“模式”绝对是一种反模式。

于 2013-08-14T03:01:21.070 回答