首页 / 知识
依赖注入成瘾?
2023-04-14 03:23:00

Dependency Injection Addiction?有不利的一面吗? 我现在几乎要依赖它了。 每当项目超过一定大小时,几乎都会对标准模式产生过敏反应,并立即使用Dependency Injection框架将其重新连接。 我发现的最大问题是,其他正在学习它的开发人员可能会感到困惑。 另外,如果它是我所使用的语言的一部分,我会感觉更好。 但是,至少对于Java而言,有几个非常轻量的库,它们非常好。 有什么想法吗? 不好的经历? 还是别再担心了? [编辑]回复:依赖注入本身的描述 很抱歉含糊。 马丁·福勒(Martin Fowler)可能比我以前更好地描述了FAR ...无需浪费精力。 巧合的是,这证实了这一点,即它仍然没有得到广泛实践,并且如果每个人都不能跟上它的步伐,则在与团队合作时可能会成为障碍。 我在这里的博客文章中描述了一些可能的弊端:http://kevin-berridge.blogspot.com/2008/06/ioc-and-di-complexity.html DI的问题与COM以及任何类似以下代码的问题相同:
问题是无法从代码中理解这样的系统。 [else]某处必须有文档定义服务/接口/对象X可以请求哪些服务/接口/对象。该文档不仅必须维护,而且必须像源一样容易获得。 除非文档写得很好,否则通常很难看到对象之间的关系。有时关系是暂时的,这使得它们更难被发现。 我喜欢KISS原则,并且坚信使用正确的工具来完成工作。如果对于给定的项目,DI的好处胜于编写可理解的代码,而不是使用它。
仅供参考,作为JDK 6的一部分,有一个非常简单且功能强大的依赖注入。如果您需要轻量级,直接的依赖注入,请使用它。 使用ServiceLoader类,您可以基于类请求服务(或该服务的许多实现):
ServiceLoader如何定义返回的服务实现? 在您的项目文件夹中,创建一个名为META-INF / services的文件夹,并创建一个名为dependencyinjection.FooService的文件。该文件包含指向服务实现的一行。在这种情况下:dependecyinjection.FooImpl 这尚未广为人知。 我是IO中的大砍刀,但是我看到一些带有巨大xml配置文件的项目,没人能理解。因此要当心xml编程。 别再担心了。我认为,随着时间的流逝,IoC技术将成为大多数开发人员的第二天性。我试图在这里教开发人员有关此问题的信息,但我发现很难传达信息,因为它对我们一直做事的方式感觉太不自然了,而这恰恰是错误的方式。而且,无论是IoC的新手还是我发现的新项目的开发人员都更加费劲。他们习惯于使用IDE来跟踪依赖关系,以了解整个过程是如何"组合在一起"的。该信息通常被写入神秘的XML中。 在我看来,主要缺点是学习曲线(如您所指出的)和增加的抽象可能使调试更加困难(这实际上也是学习曲线的一部分)。 在我看来,DI似乎更适合大型,复杂的系统-对于小型一次性应用程序,它可能会导致应用程序架构过重,从根本上讲,架构需要花更多的开发时间才能完成。可以弥补其提供的价值。 对于我们当中那些在家里玩的人,您能否添加一个或两个链接来解释什么是依赖注入?维基百科的文章很有趣,但是却不是很有启发性。 我唯一能想到的缺点是通过不断的虚拟调用会导致性能的微小下降:) @Blorgbeard:http://www.martinfowler.com/articles/injection.html可能是该主题上最好的文章之一 |
最新内容
相关内容
linux命令模式全屏?
linux命令模式全屏?,系统,工具,电脑,数据,位置,命令,虚拟机,分辨率,字符串,窗口,linux命令行模式满屏如何翻页或dmesg |less more命令的翻页按linux命令创建项目组?
linux命令创建项目组?,管理,密码,项目,命令,系统,位置,文件,用户组,用户,文件夹,linux命令中用root用户新建一个user1用户,新建一个group1的组linux中回到命令模式?
linux中回到命令模式?,系统,密码,情况,状态,终端,环境,信息,首页,界面,命令,“linux”怎么返回输入命令的状态?1、如果在命令行下使用gedit, 关linux怎么用命令模式?
linux怎么用命令模式?,工作,地址,系统,信息,管理,命令,目录,情况,图形界面,终端,linux系统常用操作命令1、linux常用命令有pwd命令、cd命令、l复制项目的linux命令?
复制项目的linux命令?,系统,项目,文件,命令,目录,源文件,语法,选项,目标,功能,在Linux操作系统中复制文件或目录时使用的命令是()。1、在Linuxlinux插入命令模式?
linux插入命令模式?,工作,系统,地址,管理,信息,时间,命令,目录,平均,项目,Linux命令1、linux系统常用操作命令如下:ls:全拼list,功能是列出目录的命令行模式登陆linux?
命令行模式登陆linux?,密码,系统,工作,信息,终端,环境,状态,地址,工具,服务,linux,按了ctrl+alt+F1,进入了类似纯命令行的界面,让输入login信linux打开命令模式?
linux打开命令模式?,系统,密码,管理,情况,终端,命令,工具,信息,地方,电脑,LINUX下怎么进入命令行模式,打开linux系统,在linux的桌面的空白处右linux命令项目部署?
linux命令项目部署?,项目,服务,环境,软件,系统,代理,管理,统一,做好,业务,怎么把php部署到apache服务器上linux?1、在linux部署php项目的方法:linux纯命令模式切换?
linux纯命令模式切换?,系统,密码,状态,电脑,网络,信息,模式,命令,情况,地方,Linux切换命令模式与GUI模式手工切换:在图形界面中找一个可以输入linux部署项目的命令?
linux部署项目的命令?,项目,系统,设备,环境,工作,基础,传播,信息,标准,代码,Linux部署springBoot项目并且查看控制台日志指定路径:如下: /data/wlinux项目常用命令?
linux项目常用命令?,工作,地址,系统,信息,管理,项目,命令,目录,标准,网络,linux常用的20个命令系统管理相关命令:df、top、free、quota、at、lp