我正在为我的应用程序构建BLL。从我所看到的 /阅读的内容来看,BLL似乎应该无状态。这是否意味着所有BLL方法都可能是静态的?还是我至少只需要每个BLL类的一个实例?出于某种原因,这对我来说似乎很奇怪,所以我认为最好检查我在实验中太过深入研究之前没有遇到错误的结尾。

我还认为这意味着BLL对象永远不应包含数据,因为数据代表状态 - 因此,对于每个BLL操作,需要要求(或从缓存中获取)然后丢弃所需的任何数据。那个听起来是对的吗?

谢谢。

有帮助吗?

解决方案

从理论上讲,是的,无状态的BLL可能意味着所有方法都可以是静态的。

但是,有一些考虑因素可能会使您朝着使用BLL对象而不是静态的实例。

  1. 静态方法引入了类之间的紧密耦合,并阻止您使用EG接口来松散依赖。使用接口的使用可以改善BLL的可检验性,因为现在可以在为服务层编写单元测试时模拟它。如果您的BLL方法是静态的,那么您通常将无需“解决方法”(例如,您需要) TypeMock 或者 Microsoft Fakes 在.NET环境中)。

  2. 在复杂的BLL方法(例如大型交易逻辑)上,您可能需要将每个业务规则重构为几种离散方法,并且在输出上,可能会将所有验证和规则违规都累积到一个包含所有的汇总结果中违规。在这种情况下,这可能会繁琐地分解实体 /实体以进行验证和累积规则违规,而是选择在类实例上进行状态存储。您的实例BLL的基类或仿制药可以在这里提供帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top