我完全是菜鸟,我正在研究设计模式,我想知道哪种更优雅的方式可以使用 c++ 或 java 或 c# 在 2 个对象之间共享数据/变量
我有一个简单的类层次结构,比如 http://s1285.photobucket.com/user/wandersonp/media/share_data_between_2_objects_zpsd9a626d0.jpg.html
例如,如何将 Hero 对象与 Monster 以及 Monster 与 drop_loop 对象进行通信
谢谢
万德森
我完全是菜鸟,我正在研究设计模式,我想知道哪种更优雅的方式可以使用 c++ 或 java 或 c# 在 2 个对象之间共享数据/变量
我有一个简单的类层次结构,比如 http://s1285.photobucket.com/user/wandersonp/media/share_data_between_2_objects_zpsd9a626d0.jpg.html
例如,如何将 Hero 对象与 Monster 以及 Monster 与 drop_loop 对象进行通信
谢谢
万德森
您可能想要使用这种Mediator
模式,它可以调解两个对象之间的交互,例如英雄和怪物。见http://en.wikipedia.org/wiki/Mediator_pattern
Observer
通常用作一个类将事件传递给其他感兴趣的类的一种方式,而不需要由中介引起的类之间的耦合。请参阅http://en.wikipedia.org/wiki/Observer_pattern。
如果我的解释正确,您正在寻找一种方法,让某些英雄实例能够获得怪物通过 Drop_Loot 掉落的战利品。
我想不出比这更简单的选择:
有很多方法可以实现这一点,但它会消除英雄和怪物之间不涉及战斗的其他类型互动的需要。
您需要提供有关您打算如何处理这些数据的更多信息。
仅基于您的问题,只需将您想要的任何对象作为参数传递给您想要的任何其他对象的方法/成员函数,例如(Java):
Hero hero = ...;
Monster monster = ...;
DropLoot loot = ...;
monster.doSomething(hero);
hero.doSomethingElse(loot);
monster.doWhatever(loot);
但是,最重要的是:鉴于您提供的信息,这个问题无法回答。共享数据时使用的“正确”“模式”取决于数据的性质、您打算如何使用它以及它如何适合您的整体应用程序架构。使用最好的工具来完成这项工作。保持代码简洁、清晰和可维护。仅仅为了使用“模式”而使用“模式”绝对是一种反模式。