数据库结构和面向对象的继承和多个接口

时间:2013-07-10 06:11:37

标签: oop design-patterns orm ooad

因此,在学习了一些关于编程到接口和其他一些继承相关主题之后,我还有另外一个问题。

数据库通常是父子表。很多应用程序都有2-4个层次的层次结构,如推荐,推荐,推荐搜索等,以及一些查找表。 现在,如果我将其建模为类,我将

Class Referral
{
List<ReferralLineItems> rli;

}
Class ReferrralLineItem
{
List<ReferralBillingLineItem> rbli;
}

在这种情况下,我可以在哪里应用接口或抽象类?

谢谢!

我见过许多高级架构师为IReferralBLC创建接口,而IReferralLineItemBLC等用于封装业务逻辑。这些接口几乎总是只有一个实现,如ReferralBLC,ReferralItemBLC等,那么为什么需要接口呢?

2 个答案:

答案 0 :(得分:2)

就域实体而言,让它们实现接口的好处是非常值得商榷的。 Some even将其视为反模式。

示例中的对象共享一些值得注意的特性,在您添加接口之前应该让您三思​​而后行:

  • 他们贫血,即没有任何行为。接口用于定义合同,对象之间的消息传递协议。如果没有要发送的消息,即没有使用的行为,他们就会失去很大一部分兴趣。

  • 它们不太可能作为依赖项注入其他对象。您不需要在单元测试中模拟对象,因此实际上不需要通常在接口中实现的模拟和真实类的公共父抽象。

答案 1 :(得分:1)

它们存在的原因与它们首先存在的相同,松耦合。您可以轻松更改实现类,而无需修改这些接口(可能使用实现的规则引擎),以及始终重要的测试,并且还以域的语言描述业务。另一方面,由于对象模型和关系模型之间的Object Relational Mapping被称为{{3},因此conceptual difference的概念已在计算机科学界讨论并仍在讨论中。 }}