【发布时间】:2011-11-17 16:14:44
【问题描述】:
我知道我的问题的答案可能涉及选择一种特定的方法,但我会尝试详细解释我想要了解的内容:
考虑一个简单的 3 层应用程序(DAL、BLL、PL)。
DAL 使用 EF 4.1 Code-First,并且对数据的访问被封装在一个存储库中。
现在,在 BLL 中,我有 Manager 课程。 (例如UserManager、ProductManager)都派生自BaseManager。我的 Manager 类中的几乎每个方法都将它们的相关实体作为参数并对其执行适当的操作。例如在UserManager(伪代码):
public bool AddPermission(User user, PermissionItem permission)
{
this.repository.Add(permission);
this.save();
}
问题是:我的经理类不需要实例化。它们可以定义为静态的。
但是如果我将它们定义为静态,我应该在每个类中创建我的共享方法和成员(如repository 和其他几个成员)(我不想将存储库等成员定义为静态)。
那么您是否建议我应该将我的真正应该是静态的 Manager 类更改为静态类?还是可以按原样使用它们?
【问题讨论】:
-
什么是存储库?我在工作中习惯于使所有业务对象无状态,因为我们的系统是多用户的,如果我们使其无状态,我们就可以创建一个所有用户可以共享的业务对象实例,而不会弄乱彼此的数据。
标签: design-patterns static business-logic n-tier-architecture