8

对于我见过的所有 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 用于单元测试(喘气,我什至没有单元测试,现有项目)。我只想将我的依赖/创建关注点和逻辑关注点分开。

4

1 回答 1

3

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

ObjectaFile或 a这样的情况下,String这与称为服务的东西没有什么不同。它是您的类的依赖项,因此适用 DI。

于 2013-03-21T12:14:33.180 回答