c# - DI 设计模式的值对象是否有效依赖?

标签 c# java design-patterns dependency-injection

对于我见过的所有 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 的情况下,例如 FileString 那么这与称为服务的东西没有什么不同。它是您的类的依赖项,因此 DI 适用。

关于c# - DI 设计模式的值对象是否有效依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15546535/

相关文章:

java - JAXB 与构建器模式一起。那可能吗?

c# - 在后面的 UserControl 代码中获取依赖属性值

c# - 将 Thread.Sleep() 替换为 System.Windows.Forms.Timer()

c# - 从 Web API 连接到 SQL 服务器的问题

c# - WP8 KnownContactProperties.Birthdate 无法设置值

java - readObject/writeObject 在序列化中的使用

java - 如何在 spring 项目中为实体类和 DTO 自动生成 Junit 测试用例

java - 使用 swagger-spring-JAVA 时,@pathVariable 中的重音字符未正确解码

design-patterns - Scala 程序员 - "should there be one obvious way to do it"还是 "more than one way to do it"?

c++ - c++ 迭代器有更漂亮的语法吗?