I recently ran across this great article by Chad Parry entitled "DIY-DI" or "Do-It-Yourself Dependency Injection".我处于一个我尚未准备好使用IoC框架的位置,但我想朝着这个方向前进。看起来DIY-DI是一个很好的第一步。
然而,在阅读完文章后,我仍然对创建对象感到困惑。这是一个简单的例子:
使用手动构造函数依赖注入(不是DIY-DI),这就是必须构建一个Hotel对象的方式:
PowerGrid powerGrid; // only one in the entire application
WaterSupply waterSupply; // only one in the entire application
Staff staff;
Rooms rooms;
Hotel hotel(staff, rooms, powerGrid, waterSupply);
创建所有这些依赖项对象使得很难单独构造Hotel对象,这意味着为Hotel编写单元测试将很困难。
使用DIY-DI会更容易吗?
DIY-DI与手动构造函数依赖注入相比有什么优势?
答案 0 :(得分:2)
你所谓的DIY-DI和手动构造函数注入之间没有区别。
如果创建Hotel
实例太困难,您可以做两件事:
Hotel
类。随着应用程序的复杂性增加,管理所有依赖项的生命周期的任务也越来越多。虽然技术上可以手动编写整个应用程序,但这正是 DI容器非常有用的地方。
答案 1 :(得分:1)
提示
创建所有这些依赖项对象使得很难单独构建Hotel对象
正如我所看到的,蓝色对象与红色对象之间不应存在依赖关系。具有不同寿命的对象不应相互依赖。另见:http://misko.hevery.com/2008/09/30/to-new-or-not-to-new/