Pup*_*Pup 5 oop ooad dependency-injection
在编写非DI系统时,一个困扰我的比喻是"一个人玩他/她的玩具".作为对象的人和人的玩具是对象创建,存储,初始化和操作的任何东西.玩具可以在达到特定状态时发送事件,但他们对使用它们的人一无所知; 它们只是带有控制开关的黑色小盒子,构成了它们的接口.该人可以从玩具中听取事件并通过操纵他们的界面进行响应.这个人可以用他/她的玩具做任何他/她想做的事情,但他/她可能不应该干涉他们的内脏,因为他们可能会破坏.
DI对我的比喻造成的破坏是它将玩具变成有意识的生物,知道它们的主人,使用它们的人.玩具可以操纵这个人,但是这个人对他们的工作方式一无所知,甚至不关心.这个人只拥有玩具,并期望玩具操纵他/她玩具自己满意.
WTF?听起来很糟糕!
什么是他们用来思考DI系统如何工作的良好心理隐喻?
Fra*_*nov 11
想一个绅士和他的管家.管家(DI框架)向绅士提供他需要的任何服务(外部依赖性)(有些像早晨咖啡,"初始化":-)); 绅士(你的班级)只是消费服务而不关心他们来自哪里,只要他们满足他的要求(实施某些界面).
或者如果你想让它更接近你的比喻,你的班级就是孩子,DI框架是妈妈,玩具是其他组成部分.孩子并不关心玩具的来源,只要她能按照自己想要的方式玩耍.