oop – 依赖注入ContainerDoesnt看起来很正确
发布时间:2020-12-14 04:46:55 所属栏目:百科 来源:网络整理
导读:我有一个非常小的应用程序,我用它来学习设计模式. 目前我正在尝试实施一个可靠的注射容器,但它感觉就像一个工厂. 有人可以解释容器的问题以及可以改进的地方. 正如我所说,它非常小,应用程序只需要几个对象: class MyContainer{ public function getObjectA(
我有一个非常小的应用程序,我用它来学习设计模式.
目前我正在尝试实施一个可靠的注射容器,但它感觉就像一个工厂. 有人可以解释容器的问题以及可以改进的地方. 正如我所说,它非常小,应用程序只需要几个对象: class MyContainer { public function getObjectA() { return new MyObjectA(); } public function getObjectB() { $objectBArrayParam = array('arrparam1','arrparam2','arrparam3','arrparam4'); $objectB = new MyObjectB('param1','param2','param3','param4',$objectBArrayParam); return $objectB; } public function getApplicationRunner() { $objectA = $this->getObjectA(); $objectB = $this->getObjectB(); $app = new ApplicationRunner($obejctA,$objectB); return $app; } } 解决方法
工厂可以被视为静态类型的依赖注入.您在编译时指定参数,结果对象图始终相同.
依赖注入工具将使用某种反射来在运行时检查需要哪些参数.然后它将在其配置中搜索所需的类型并为您构建对象图. 如果要构建一个简单的DI容器,则需要创建对注册类型的支持以及在运行时检查所需类型. 就像是: myDi.Register(<typeofIObectA>).To(<typeofobjectA>) myDi.Register(<typeofIObjectB>).To(<typeofobjectB>) MyDi.Resolve(<typofApplicationRunner>) DI容器会看到ApplicationRunner需要两个参数.它将检查这些类型的配置并构造对象. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |