elr*_*anu 2 design-patterns repository-pattern
假设我们有一个名为IAccountRepo的接口和一个实现此接口的类,该接口称为AccountDbRepo,它调用SQL.
现在我们必须用AccountWebApiRepo替换这个具体的类(AccountDbRepo),这意味着这个类将在webapi中进行操作.
IAccountRepo的命名是否正确,知道混凝土类进行web api调用?我们应该将Repo重命名为Service吗?
编辑: 现在,如果你必须创建第二个接口ICarRepo,你知道实现将是对webapi的调用.将其命名为Repo是否正确?
对接口进行编程的全部意义在于,您应该能够在不改变系统正确性的情况下将一个实现替换为另一个实现.这也被称为Liskov替代原则.
因此,如果您要根据具体实现重命名接口,那么它将是一个Leaky Abstraction.
因此,您不应该因为这个原因重命名接口.正如Robert C. Martin在敏捷原则,模式和实践中所解释的那样,"客户[...]拥有抽象接口"(第11章).因此,您应该根据客户端的感知方式命名接口,而不是如何实现.