关于.net:DAL和BLL的组合或继承?

Composition or Inheritance for DAL And BLL?

问题

  • 数据访问层(DAL)和业务逻辑层(BLL)是通过接口还是通过抽象基类公开的?
  • 我们什么时候应该选择抽象类而不是接口,什么时候应该选择接口而不是抽象类?
  • 使用抽象基类的一个好处是,如果外部方决定使用基本抽象类扩展/自定义(特定层的)功能,那么该特定层公开的许多方法将已经在基本抽象类中实现,而使用接口,则需要实现所有公共被特定层暴露的hod?

  • 主要的区别是类只能从cingle类继承,而您可以实现许多接口。

    这里有一个关于优缺点的很好的讨论。

    1)通常,这些是具体的类——它们可以使用接口/抽象类来形成一个一致的框架(一个BusinessBase类、一个BusinessCommand类等),但我不确定您在做什么。

    2)当您想要继承一些实现时,通常使用抽象类。通常是一个接口,当您不想限制应用程序类从其他事物继承时。

    3)是的,这是主要的好处,但是由于单一的继承模型有缺点。