在依赖注入中,我们针对抽象进行编程。
根据我的经验,我可以说应用程序中的大多数抽象与其实现具有 1:1 的关系。这违反了重用抽象原则。
Mark Seeman 在他的一些帖子中建议我们可以为抽象使用 Null 对象实现以避免违反RAP(Mark Seeman 的这个建议可能是我的推论。如果我在此引用 Mark 的错误,请纠正我)。我的问题是。
- 如何做空对象实现?
- 可以违反 RAP 吗?
在依赖注入中,我们针对抽象进行编程。
根据我的经验,我可以说应用程序中的大多数抽象与其实现具有 1:1 的关系。这违反了重用抽象原则。
Mark Seeman 在他的一些帖子中建议我们可以为抽象使用 Null 对象实现以避免违反RAP(Mark Seeman 的这个建议可能是我的推论。如果我在此引用 Mark 的错误,请纠正我)。我的问题是。
就我个人而言,即使只有一个生产实现,我也发现对抽象进行编程很有用。尤其是:
请注意,这是一个错误的陈述:
在依赖注入中,我们针对抽象进行编程。
您可以非常轻松地将依赖注入与具体类一起使用。没有什么可以说你必须为你的依赖创建接口。依赖注入更多的是关于你的类如何获得它的依赖,而不是关于它使用什么抽象级别来表达它们。
所以基本上:
List<T>
——例如,您不需要将您的类与List<T>
用于测试目的的行为隔离开来。