值对象是DI设计模式的有效依赖项吗?

时间:2013-03-21 11:41:31

标签: c# java design-patterns dependency-injection

对于我看过的所有DI示例,我总是将依赖关系看作其他类,比如服务。但是,对象可能在很大程度上和/或关键地依赖于配置值,例如字符串和资源包装器(文件/路径/ URI / URL,而不是整个大值字符串/文档或读取器)。

注意,这仅仅是关于Java或C#语法的DI设计模式,而不是任何特定的DI框架如何处理它。

例如,假设我有这个类返回一个String(相对路径,基于一些不起眼的实现逻辑)。它(而不是它的各种实现者)对“projectLocation”具有配置/初始化依赖性,因为用户可以在他们的机器上拥有各种项目,并且无论何时调用它,该类都将基于给定项目执行某些逻辑。

public abstract class PathResolver {

    protected File projectFilesLocation;

    public RoutinePathResolver(File projectFilesLocation) {
        this.projectFilesLocation = projectFilesLocation;
    }

    public abstract String getPath(String someValue);
}

我没有将DI用于单元测试( gasp 我甚至不进行单元测试,现有项目)。我只是想分开我的依赖/创作问题和逻辑关注期。

1 个答案:

答案 0 :(得分:3)

如果您要注入的内容(例如文件位置)是该类直接使用的内容,那么注入它是完全有效的。

如果是Object,例如FileString,那么这与名为Service的内容没有什么不同。这是你班级的依赖,因此DI适用。