域层中的类的范围

时间:2013-06-03 11:39:22

标签: c# oop domain-driven-design encapsulation single-responsibility-principle

在我的域图层中,我有一个名为“客户端”的类。通常我只会创建与该类客户端直接相关的属性,例如 - “Firstname”,“Lastname”,“Address”等。以及客户端相关的方法。

我的问题是,将一个方法添加到这个对一组客户端执行工作的类会不会被认为是错误的OO设计?

E.g。 - 假设我想在客户端上执行某项操作,例如更新其电子邮件地址。在我这样做之前,我想确保没有其他客户端具有相同的电子邮件地址,因此我在Client类中创建了一个名为ValidateEmail(string emailAddress)的方法。

在此方法中,将查询具有该电子邮件地址的任何现有客户端的客户端存储库,并返回布尔值。

这会被视为糟糕的OO设计吗?我宁愿不必创建任何其他类或填充UI层 - 控制器逻辑与此验证,它似乎适合客户端类,但感觉像对兄弟姐妹执行操作是不对的..

由于

1 个答案:

答案 0 :(得分:0)

如果是我,我会有一个ClientCollection类。除了名字之外,你几乎都有这个,所以我认为这没什么大不了的。

作为该类的一部分,我可能有一个名为GetClientsWithEmail的方法,该方法返回具有特定电子邮件地址的客户端列表。通过这种方式做事,这种方法纯粹是一种查找,不包含任何业务逻辑。事实上,我可以在这里设想一行linq。

当有人试图更新客户端的电子邮件地址时,您将获得一些验证码。这可能是也可能不是Client类的一部分(您表明它是,但它当然不一定是)。无论如何,这个验证代码可以调用ClientCollection.GetClientsWithEmail方法,并测试返回的Client对象数是零。