针对接口进行编程:您是否为所有域类编写接口?

2022-09-01 21:41:12

我同意,针对接口进行编程是一种很好的做法。在大多数情况下,在Java中,“接口”在这个意义上意味着语言构造接口,因此您编写接口和实现类,并且大多数时候使用接口而不是实现类。

我想知道这是否也是编写域模型的好方法。因此,例如,如果您有一个域类客户,并且每个客户可能有一个订单列表,那么您通常还会编写接口ICustomer和IOrder吗?客户还会有一个IOrder列表而不是订单吗?或者,只有当它真正由域驱动时,您才会在域模型中使用接口,例如,您至少有两种不同类型的订单?换句话说,您是仅仅因为领域模型中的技术需求而使用接口,还是仅在它相对于实际领域真正合适时才使用接口?


答案 1

“只是因为”编写接口对我来说是浪费时间和精力,更不用说违反KISS原则了。

当它们在表示相关类的常见行为方面实际上很有用时,我就会编写它们,而不仅仅是作为一个花哨的头文件。


答案 2

不要过度设计您的系统。如果您发现您有几种类型的订单,并且认为为订单声明一个接口是合适的,而不是在需要时重构它。对于领域模型,特定接口在开发生命周期中发生很大变化的可能性很高,因此尽早编写接口很少有用。