依赖注入(Dependency Injection)是一个软件设计模式,它可以帮你去除硬编码依赖。比如,你要动态加载一些插件;或者,你想要在测试环境下使用模拟的对象,在真实环境下使用真实的对象。在知道调用者的需求后,这个模式会自动把被调用者(对象、值 等等)注入到调用者中。
依赖注入涉及到至少 3 个元素:
调用者(依赖者);
一份依赖的声明,以接口方式定义;
一个注入器(有时也叫:提供者、容器),它能创建实现了接口(定义依赖的接口)的类的实例。
调用者会描述它需要哪些被调用者才能正常工作。再由注入器来决定哪些具体的实现能满足调用者的需求,并提供给调用者。
在传统的软件开发中,调用者是自己来决定使用哪些被调用者的实现的。但是在依赖注入模式中,这个决定权授权给了注入器,注入器能在软件运行的时候选择替换不同的实现,而不是在编译时。这也是依赖注入的关键优势。
依赖注入模式除了在复杂软件的测试时特别有用,还经常用于定位组件,或者定位、初始化软件中的服务。
支持依赖注入的框架,在 Wiki 上也列了很多。比如 Java 的 Spring,PHP 的 Zend Framework 2、Symfony 2,等。
金城在线专注网站、软件、APP、微信公众平台、小程序、抖音、头条等开发推广,如果您有这方面的需求或者不同的观点,欢迎联系交流。
读完这篇文章后,您心情如何?