首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用DIY创建简单的对象?

用DIY创建简单的对象?
EN

Stack Overflow用户
提问于 2010-06-10 17:37:30
回答 2查看 806关注 0票数 1

最近,我看到了查德·帕里撰写的题为"DIY-DI“或”自己动手“的伟大文章。 --我还没有准备好使用IoC框架,但我想朝这个方向努力。似乎DIY是一个很好的第一步。

然而,在阅读了这篇文章之后,我仍然对对象创建感到有些困惑。下面是一个简单的例子:

使用手动构造函数依赖项注入(而不是DIY),必须构造Hotel对象:

代码语言:javascript
复制
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会使它更容易吗?

与手动构造函数依赖注入相比,DIY提供了什么优势?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-06-11 05:06:20

在您所说的DIY和手动构造函数注入之间没有区别。

如果创建Hotel实例太困难,您可以做两件事:

  • 确保将依赖关系表示为接口或抽象基类。这允许您通过提供诸如动态模拟或类似的Hotel类来独立地测试测试双打类,而不是具体的类。
  • 如果有太多的依赖项,那么重构到聚合服务

随着应用程序变得越来越复杂,管理所有依赖关系的生命周期的任务也是如此。虽然在技术上可以手动组合整个应用程序,但这正是DI容器非常有用的地方。

票数 2
EN

Stack Overflow用户

发布于 2012-05-03 19:30:36

暗示

创建所有这些依赖对象使孤立地构造Hotel对象变得困难

正如我所看到的,不应该存在从蓝色对象到红色对象的依赖关系。具有不同生命周期的对象不应相互依赖。另见:http://misko.hevery.com/2008/09/30/to-new-or-not-to-new/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3016940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档