2010-06-10 33 views
1

I recently ran across this great article by Chad Parry entitled "DIY-DI" or "Do-It-Yourself Dependency Injection".我现在还没有准备好使用IoC框架,但我想朝这个方向前进。看起来DIY-DI是一个很好的第一步。使用DIY-DI创建简单对象?

但是,在阅读文章后,我仍然对创建对象感到困惑。这里有一个简单的例子: enter image description here

使用手动构造函数依赖注入(未DIY-DI),这是一个必须如何构建一个酒店的对象:

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); 

创建所有这些依赖的对象,难以孤立地构建酒店对象,这意味着为酒店编写单元测试将是困难的。

使用DIY-DI是否更容易?
DIY-DI提供超过手动构造函数依赖注入的好处吗?

+0

确认..无法获取上传的图像。 – Runcible 2010-06-10 17:43:50

回答

2

你所说的DIY-DI和手动构造注入没有区别。

如果它太困难创造一个Hotel比如,你可以做两件事情:

  • 确保依存关系被表达为接口或抽象基类。这让你可以通过提供Test Doubles来测试Hotel类,例如动态模拟或类似代替具体类。
  • 如果依赖关系太多,那么refactor to aggregate services

随着应用程序日益复杂化,管理所有依赖项的生命周期的任务也随之增加。虽然在技术上可以手动编写整个应用程序,但这正是DI容器极其有用的地方。