微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

设计模式 – 依赖注入链接反模式吗?

这是问题所在,假设我们正在制作视频游戏,并希望使用依赖注入.这是我们拥有的:

Game Class  // This is just the code to keep track of the overall game logic
Character Class // This would be the guys in the game,good and bad guys both
Weapon Class // The weapons for the characters

所以通常当我做依赖注入时,我会在地图上注入当前位置,并将游戏状态注入角色,这样我的角色就​​可以知道在哪里创建自己的信息等等.然后我让角色创建武器并注入关于武器强度的数值,以及游戏类等的其他一般游戏状态等.

这几乎对我来说似乎是一种反模式.我之所以这么说是因为现在你(至少对我来说似乎这样)的代码非常脆弱且难以改变.如果我们想要更改传递的游戏状态信息,我们将被迫更改所有三个类.我们对Game类进行了原始更改,然后修改了Character,最后修改了Weapon类.这是很多工作,特别是如果你要深入5级而不仅仅是3级.虽然是的,它可以让单位测试比没有DI更容易.

这听起来像是不好的做法.这是通常的事情吗?我们有什么样的“MotherShip”模式,一切都处于最顶层.因此,不是游戏创造角色创造武器,我们让游戏(或其他一些类)创造所有这些.

这样,如果我们想要为角色添加新武器,游戏类可以自己创建武器并注入它.不知道该怎么做.谢谢

解决方法

设计问题很难回答,特别是当这个例子似乎没有意义时.在这种情况下,角色创造武器是没有意义的.角色应该对这一个角色负责.也许你可以为角色添加武器,但是,除非角色是武器制造者,否则我认为它实际上不会创建一个新的武器类.

顺便说一句,我认为比其中任何一种都更好的模式是工厂模式.创建一个负责创建武器的类.还有一个负责创建角色的类.这样,如果在创建角色时需要更改3个或4个位置,则该工厂可以处理该行为,并将其包含在将来的更改中.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐