我无意中听到以下内容,并被要求确认此声明:
“SOLID/TDD 鼓励对一个接口进行一种实现,这不是现实世界,而且违背了接口的观点,不是吗?”
我最初同意 TDD 和 DI 的所有在线示例都遵循典型的 IRepository/MyRepository 示例,其中只有一个实现。再三考虑后,我不同意。
我正在尝试做的是提供证明它不存在的证据,以及一个接口可以有多个实现的示例,并展示它在 DI 方面的工作原理。
我希望人们可以帮助我解决这个问题。
更新:虽然我了解 DI 和单元测试的概念,但我想展示的是我们如何在生产中让多个类实现一个接口。
UPDATE2:想到了一个简单的例子,这里是多个实现的可能实现,但它仍然不能真正回答我想要的。如果你有一个对 ILogger 或 IDataProvider 或 ISomething 有单一依赖的构造函数怎么办:
public interface ILogger
{
void Write(string data);
}
public class FileLogger : ILogger
{
void Write(string data)
{
//
}
}
public class DBLogger : ILogger
{
void Write(string data)
{
//
}
}
public class EventViewerLogger : ILogger
{
void Write(string data)
{
//
}
}
public class Calculator
{
private IEnumberable<ILogger> loggers;
public Calculator(IEnumberable<ILogger> loggers)
{
this.loggers = loggers;
}
public int Add(int a, int b)
{
var result = a + b;
foreach(var logger in loggers)
{
logger.Write("Result was " + logger);
}
}
}