如何以SOLID方式管理外部资源?

时间:2016-10-20 17:39:05

标签: c# testing abstraction solid-principles

我正在开发一个项目,我正在将一个外部文件解析为抽象对象,如下所示:

public interface IMapConverter
{
    IMap Convert(IMapFile file);
}

public interface IMapFile
{
    void Load(string filePath);
    string Json { get; }
}

我的计划是通过使用IMapFile实现并在该实现中创建StreamReader来抽象文件的加载。然后我会将其传递给IMapConverter.Convert方法。这是一种正确的方法并保持可测试性吗?将字符串直接传递给IMapConverter并在那里处理它会不会是错误的?

1 个答案:

答案 0 :(得分:1)

我没有看到你做的建议有什么问题,即具体IMapConverter创建具体IMapFile的实例,因为它们都在你的应用程序的同一层。

根据我的理解,规则是一个实现依赖接口的类可以“知道”另一个接口的实现,只要它们位于应用程序的同一层;一旦你在图层之间工作,你想要将你的依赖项,即你的具体实现注入到它下面的层中。

我一直在研究the onion architecture,我强烈建议任何想要创建松散耦合,高度可测试的应用程序的人。在该网站上讨论了这种依赖关系的概念,只要它们位于同一层上就会相互了解。

相关问题