我有一个具体的类:验证器,只做一件事。
我没有必要创建一个接口,因为只有一个实现。
将Validator的实例注入更高级别的类时,这是否会失败依赖于反转原理?
如果我要为此类使用接口,则会导致命名问题
答案 0 :(得分:2)
我们使用接口,因为它们有助于交换实现,在单元测试期间进行模拟,当然还有抽象。
这在注入时是否会失败反转原理的依赖性 Validator的实例进入更高级别的类?
根据DIP,Validator
应该实现IValidator
,而需要它的类应该只知道IValidator
合同,而不是Validator
定义本身。但是,IOC容器(例如Unity)允许您注册类类型而不是接口。
这只是一个原则,可能有一个有效的例外,不按原样遵循它。在像你这样的情况下,我会更多地关注DIP,IOC和DI的核心意图;那就是松散耦合的代码。如果我确定只有一个实现,我会毫不犹豫地创建界面。
我只是确保除了我的IOC容器之外什么都不会实例化Validator
。