在不同层次结构的两个类之间共享信息

时间:2013-08-14 02:58:11

标签: design-patterns

我完全是菜鸟,我正在研究设计模式,我想知道哪种更优雅的方式在两个对象之间使用c ++或java或c#

共享数据/变量

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

例如,我如何与怪物交流Hero对象,将怪物传递给drop_loop对象

由于

沃德森

3 个答案:

答案 0 :(得分:1)

您可能希望使用Mediator模式,该模式调解两个对象之间的交互,例如Hero和Monster。见http://en.wikipedia.org/wiki/Mediator_pattern

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

答案 1 :(得分:0)

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

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

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

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

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

答案 2 :(得分:0)

如果我正确地解释了这一点,那么你正在寻找一种方法让Hero能够通过Drop_Loot获得怪物掉落的Loot。

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

  • Hero CanAttack任何怪物
  • Monster CanBe被任何英雄攻击
  • Monster可以DropLoot到它的位置
  • 来自任何位置的Hero CanPickUpLoot

有很多方法可以实现,但它可以消除Hero和Monster之间的其他一些不涉及战斗的交互的需要。