c# - 即使类不拥有这些依赖项,但在方法中使用它们,您是否在构造函数中注入依赖项?
问题描述
如果一个School
类依赖于一个EmailSender
类,您可能必须EmailSender
通过它的构造函数注入它,该类具有通用接口,例如IMessagable
orIMessageSender
甚至IEmailSender
,以便将来可以将其换成其他东西。
为此,您将在类中创建一个只读私有字段School
。
但是你是说School
HAS-A MessageSender
,但它肯定只是在它的一些方法中使用它?
解决方案
类声明的任何属性/成员都是类具有的东西。
Has-A 在这里与继承的 Is-A 区分开来。
uses-a 属性更多地与类凝聚力而不是组合相关。如果该类具有-A 属性但它不使用它,或者在一小部分函数中使用它,则它的内聚性低。
HAS-A 和 IS-A 都是类的依赖项。这就是为什么我们努力将它们都作为抽象,将两者松散耦合。
没有您的类将无法编译的任何类/接口定义都是依赖项。即使它没有 HAS-A 关系并且它只是作为函数参数传递。
推荐阅读
- linux - 在终端中获取上一个命令的第一个单词的快捷方式
- shell - Chocolately `Get-ExecutionPolicy` - 未捕获的 ReferenceError:未定义获取
- azure - 使用客户端密码检索 Azure KeyVault 密码
- redux - Redux 中 mapStateToProps 接收到的状态
- amazon-web-services - 如何在 K8s 中获取给定 pod-name 和命名空间名称的 pod 的日志记录级别?
- java - 如何扫描网格并逐行汇总网格中填充空间的数量并单独添加它们
- discord - 如何从 Discord 机器人的 API 发送图像?
- r - 如何映射嵌套数据框,并将多列存储为输出
- python - 在 Python 字典中对值进行排序
- docker - 了解 Hyperledger Fabric 中的 Docker 容器内部结构