依赖注入:如何创建 3 个互相依赖的单例?

2021-10-13 18:41:57 +08:00
 az22c

demo1

demo2

一开始如 demo1,有“忍者”、“剑”、“手里剑”三个对象实例。"剑“对象会注入到”忍者“中,被依赖引用到。

最终,我想同时创建 3 个互相依赖的单例:“忍者”、“剑”、“手里剑”,每个实例可能会互相依赖。其中,当”剑“对象依赖”忍者“对象的时候,如 demo2,想通过 sword.getOwner 获取对应的”忍者“,就会报”循环依赖“错误。

如何实现创建 3 个互相依赖的单例?

954 次点击
所在节点    前端开发
3 条回复
dqzcwxb
2021-10-13 19:24:46 +08:00
pluvet
2021-10-13 21:13:51 +08:00
不要直接依赖,提取接口。举个例子,sword 实现 IGameItem,player 实现 IPlayer,sword.getOwner 返回一个 IPlayer 。依赖关系:sword 依赖 IGameItem,IGameItem 依赖 IPlayer,player 依赖 IPlayer 。
az22c
2021-10-13 22:39:48 +08:00
我没有太看得懂。
@pluvet 你这个描述的应该只是接口。好像还是额外需要添加手动赋值的代码吧。比如 sword.getOwner 函数的函数体,就是耦合的点。
我觉得我想要的是,在只描述接口的条件下,能在运行时同时“自动”创建 3 个实例,然后每个实例有对应的属性指向另外 2 个实例。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/807613

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX