控制反转与依赖注入
# 控制反转与依赖注入
前言
翻译来自Martin Fowler大师的 Inversion of Control Containers and the Dependency Injection pattern (opens new window)
在Java社区中,出现了许多轻量级容器,它们帮助将来自不同项目的组件组装成一个协调的应用程序。这些容器的底层都采用了一种常见的模式来执行连接,这个概念被称为“控制反转”。在本文中,我将深入探讨这个模式的工作原理,更具体地称为“依赖注入”,并将其与服务定位器进行对比。选择哪种方式并不重要,重要的是将配置与使用分离的原则。
一个常见的问题是如何将不同的元素连接在一起:当这些元素是由不同团队构建且彼此了解有限时,如何将这个Web控制器架构与那个数据库接口连接在一起。许多框架已经尝试解决这个问题,并且有几个框架正在扩展提供一种从不同层面组装组件的通用能力。这些通常被称为轻量级容器,例如PicoContainer和Spring。
这些容器的基础是一些有趣的设计原则,这些原则超越了这些具体的容器,甚至超越了Java平台。在这里,我想开始探索其中一些原则。
# Components and Services
将元素连接在一起的话题几乎立即引入了围绕"服务"和"组件"这两个术语的混乱术语问题。你会很容易地找到关于这些事物定义的长篇矛盾文章。对于我在这里的目的,以下是我目前对这些多义词的使用方式。
组件是软件的一部分,它的源码不可以被使用者修改,只能扩展。
编辑 (opens new window)
上次更新: 2024/04/23, 16:50:31