2010-11-19 74 views
1

我正在为我的应用程序构建一个BLL。从我所看到/阅读的内容来看,BLL似乎应该是无状态的。这是不是意味着所有的BLL方法都可能是静态的?或者我至少只需要每个BLL类的一个实例?由于某种原因,这对我来说似乎很奇怪,所以我认为我最好检查一下,在我钻研我的实验之前,我没有得到棒的错误结局。BLL应该是无状态的吗?

我也认为这意味着BLL对象不应该包含数据,因为数据表示状态 - 因此对于每个被调用的BLL操作,所需的任何数据都需要被重新查询(或从缓存中获取),然后丢弃。那个听起来是对的吗?

谢谢。

回答

2

理论上,是的,无状态的BLL可以表示所有的方法都可以是静态的。

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

  1. 静态方法引入了类之间的紧耦合,并防止您使用例如接口松散地耦合依赖关系。使用接口可以提高BLL的可测试性,因为现在可以在为服务层编写单元测试时进行模拟。如果您的BLL方法是静态的,那么如果没有“解决方法”,您通常无法做到这一点(例如,您在.Net环境中需要TypeMockMicrosoft Fakes)。对于复杂的BLL方法(例如大事务逻辑),您可能希望将每个业务规则重构为几个离散方法,并且在输出上,可能会将所有验证和规则违规集中到单个聚合中包含所有违规的结果。在这种情况下,将要验证的实体/实体并累积规则违规可能很麻烦,而是选择在类实例上进行有状态存储。您的实例BLL的基类或泛型可以在这里提供帮助。

相关问题