如何命名基类名称对吗?

时间:2017-10-31 07:38:36

标签: c#

我有一个像这个图像的模型:

1

然后,我根据模型创建了一些类:

(getcfg )

我的问题:我应该用public abstract class AccountManager { public void LockAccount(string userId) { } } public class AdministratorTool : AccountManager { public void DeleteAccount(string userId) { } public void UnlockAccount(string userId) { } } public class ModeratorTool : AccountManager { } public class MemberTool : AccountManager { } 改变名称是什么?

我想这样做,因为AccountManager表示:提供一些与帐户有关的方法。

由于Account managerDeleteAccount完全相同(使用帐户),因此,将LockAccountDeleteAccount放在LockAccount之外会进行更改。

如果我仍想将这两种方法保留在AccountManager中,我需要更改AdministratorTool的名称。

那么,你可以给我一个名字吗?

而且......我的子问题是:你能不能给我一些关于命名课程的技巧?有几个关于如何创建基类/派生类但命名类名的问题。

谢谢!

p / s:这个问题来自于我不擅长英语:((

1 个答案:

答案 0 :(得分:2)

权限通常会随着您在层次结构中走得更高而累积 - 您可以在现实世界中看到相同的事物 - CTO是特定类型的经理,而经理是特定类型的员工。当你只是一名低级员工时,作为首席技术官并不否认你拥有的任何特权。例如 - 没有人会告诉CTO他们不能使用公司的浴室 - 因为这是所有员工共享的特权。

因此,除非成员可以做主持人不能做的事情或者主持人可以做管理员不能做的事情,否则我甚至不会打扰抽象基类。
我只需拥有Member类,让Moderator类继承自Member并使用主持人及以上功能进行扩展,并让Administrator类继承自Moderator并使用管理员能力扩展它:

public class Member
{
     public void LockMyAcount() {/* implementation */}
}

public class Moderator : Member
{
     public void LockAccount(string userId) {/* implementation */}
}

public class Administrator : Moderator 
{
     public void DeleteAccount(string userId) {/* implementation */}
     public void UnlockAccount(string userId) {/* implementation */}
}