对于我见过的所有 DI 示例,我总是将依赖项视为其他类,如服务。但事实上,一个对象可能在很大程度上和/或至关重要地依赖于配置值,例如字符串和资源包装器(文件/路径/URI/URL,而不是整个大值字符串/文档或阅读器)。
请注意,这是关于 Java 或 C# 语法中的 DI 设计模式,而不是任何特定的 DI 框架如何处理它。
例如,假设我有一个返回字符串的类(相对路径,基于一些晦涩的实现逻辑)。它(而不是它的各种实现者)对“projectLocation”具有配置/初始化依赖性,因为用户可以在他们的机器上拥有各种项目,并且此类将在调用时根据给定项目执行一些逻辑。
public abstract class PathResolver {
protected File projectFilesLocation;
public RoutinePathResolver(File projectFilesLocation) {
this.projectFilesLocation = projectFilesLocation;
}
public abstract String getPath(String someValue);
}
我不只是将 DI 用于单元测试(gasp 我什至没有单元测试,现有项目)。我只想将我的依赖/创建关注点和逻辑关注点分开。
最佳答案
如果您要注入(inject)的东西(例如文件位置)是类将直接使用的东西,那么注入(inject)它是完全有效的。
在 Object
的情况下,例如 File
或 String
那么这与称为服务的东西没有什么不同。它是您的类的依赖项,因此 DI 适用。
关于c# - DI 设计模式的值对象是否有效依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15546535/