0

作为我上一个问题的延续,(请参阅https://stackoverflow.com/questions/3737848/creating-a-loosely-coupled-scalable-software-architecture

有人建议也像我从三层项目的表示层抽象 BLL 一样抽象 DAL。关于如何做到这一点的任何建议?我还需要在 BLL 和 DAL 之间建立一个工厂吗?我需要你们的意见。谢谢。

4

1 回答 1

2

有趣 - 在为表示层做这件事之前,我会在 BL 和 DAL 方式之间进行抽象。

您在另一个问题中使用的方法似乎是合理的-您为什么不重用它?

  • 是的,你需要一个工厂;但是您可以将它包含在一个公共类/程序集中并让它只返回 a object,然后您可以在它返回时对其进行转换 - 即:在 BL 中被调用的位置。
  • (为了完整性:)使用Activator.CreateInstance()(正如您在其他问题中使用的那样)是正确的方法。
  • 对于 DAL,我倾向于使用存储在配置中的值(作为传递给工厂的参数);经常更改 DAL 实现并不常见 - 所以配置对我来说效果很好。
  • 在设计 BL 和 DAL 之间的契约者/抽象时,请遵守接口隔离原则(ISP)——如果你做得对,你将能够一次混合和匹配不同的物理 DAL 实现。
  • 如果您将 DTO 和工厂保存在一个公共程序集中(可能是同一个程序集),那么很容易将它们与 BL 和各种 DAL 实现一起使用——但需要注意的是,您要让这个公共类尽可能地没有依赖关系。如果您这样做,您将能够添加/更新 DAL 实现,而无需重新编译和重新部署整个系统。
于 2010-09-19T21:43:54.443 回答