理解依赖注入:Setter注入与优势分析
需积分: 5 89 浏览量
更新于2024-08-18
收藏 332KB PPT 举报
"本文是关于依赖注入的学习笔记,重点介绍了 Setter 注入这一实现方式。"
依赖注入是一种软件设计模式,它允许组件之间的依赖关系在运行时被管理,而不是在组件内部硬编码。这种方式提高了代码的可测试性、可维护性和灵活性。在传统的编程中,一个类通常会自行创建它所依赖的对象,而在依赖注入中,这些依赖对象是由外部的“容器”或“框架”来创建和提供。
Setter 注入是依赖注入的一种常见实现方式。在 Setter 注入中,客户类(需要依赖服务的类)不直接创建服务类的实例,而是通过声明一个或多个 Setter 方法来接收依赖的对象。这些 Setter 方法通常接受接口类型作为参数,而不是具体的实现类。这样做的好处是,客户类只需要知道接口,而不关心具体的实现细节。
例如,我们可以有如下的类结构:
- 客户类 `CustomA`,它有一个名为 `setPoint` 的 Setter 方法,接受接口 `IServerA` 作为参数。
- 服务类 `ServerA`,实现了 `IServerA` 接口。
- 第三方类 `ContextA`,负责创建 `ServerA` 实例并将其注入到 `CustomA` 中。
在 `ContextA` 类中,我们先创建 `ServerA` 的实例,然后创建 `CustomA` 的实例,并调用 `setPoint` 方法将 `ServerA` 注入到 `CustomA` 中,使得 `CustomA` 可以通过注入的 `ServerA` 实例进行操作。
依赖注入的益处包括:
1. **模块化**:由于每个类都专注于自己的职责,代码结构更清晰,每个类的功能更加明确。
2. **可维护性**:当需要修改或扩展某个服务时,只需更改提供该服务的类,而无需修改使用该服务的类,降低了维护成本。
3. **遵循开放封闭原则**(OCP):对修改关闭,对扩展开放。这意味着在不修改原有代码的基础上,可以通过添加新的实现来扩展功能。
依赖注入可以通过多种方式实现,除了 Setter 注入外,还有构造注入和依赖查找等。构造注入是在类的构造函数中接收依赖对象,强制在对象创建时就提供依赖。依赖查找则是由容器负责在运行时查找和提供依赖。
总结起来,依赖注入是一种强大的设计原则,通过分离关注点和解耦组件,提升了软件的可维护性和可扩展性。Setter 注入是实现这一原则的一种实用方法,通过 Setter 方法传递依赖,使得客户类可以在运行时获得所需的服务,而无需直接创建或管理这些服务的实例。
2019-05-26 上传
2019-05-26 上传
2019-01-20 上传
2019-05-26 上传
2021-12-07 上传
2012-02-23 上传
2024-05-17 上传
2021-02-18 上传
2012-08-08 上传
永不放弃yes
- 粉丝: 916
- 资源: 2万+
最新资源
- H3C_iNode_PC_7.3_linux E0548
- becquerel:Becquerel是用于分析核光谱测量的Python软件包
- comp_graf_laba1
- glsl-map:将一个范围内的值映射到另一范围内
- 计算机科学知识:计算机基础知识:计算机网络,操作系统,数据库,数据结构与算法,计算机组成原理,软件工程,设计模式,代码外的生存之道,开发常用工具
- arrowdb:用于在所有制造商中查找箭头的数据库
- js代码-js插入新列表时剔除掉全列表已有的项目
- Warpoint:基于团队的2D多人CTH独立游戏
- signsend:Zetakey登录并发送-Webapp。 它使用具有Canvas支持HTML5浏览器(例如Zetakey浏览器www.zetakey.com)捕获签名,并将其发送到电子邮件地址
- 美萍瑜珈管理系统标准版
- vagrant-spree:使用Vagrant的Spree开发环境
- nano-4.0.tar.gz
- let-prove-blocking-queue:以多种方式证明阻塞队列的死锁状态
- albumtrackr:利用ASP.Net Core Web API的Android应用,由Ryan Deering和James Lynam构建
- 剧本
- java代码-编写一个程序判断字符串“Tom”是否在另一个字符串“I am Tom, I am from China”中出现。