【发布时间】:2014-08-22 12:31:37
【问题描述】:
在命名空间com.example.website.domain.model,我有Project类,见代码:
public class Project
{
private string Name;
private int Status = 0;
... And much more attributes ....
public Project(string name) {
Name = name;
}
public void Publish()
{
Status = 1;
}
public bool IsPublished()
{
return Status == 1;
}
public void ChangeName(string newName)
{
if (IsPublished()) throw new InvalidOperationException("Not allow to change name after published");
Name = newName;
}
public string GetName()
{
return Name;
}
... And much more method ...
}
在正常情况下,如果项目尚未发布,用户可以更改项目名称。
我必须创建能够更改名称的管理页面,即使项目已发布。我考虑将新方法添加到Project,即public void AdminChangeName(string name)。但我认为Project 不应该在管理部分(命名空间)之外公开这种方法。我想在没有验证的情况下调用具有相同签名的相同方法。
【问题讨论】:
-
我认为拥有一个不包含该验证的单独
AdminChangeName(...)函数非常好。您的管理员可能会更改已发布项目的名称,而用户可能不会,这似乎是一个合适的业务用例。应用层应确保该函数仅由管理员调用(授权)。
标签: c# oop domain-driven-design software-design