以下是我的课战略模式实现
public abstract class BaseUser
{
protected List<Perm> permissions;
public abstract void AddPerm(Perm perm);
}
public class NormalUser : BaseUser
{
public override void AddPerm(Perm perm)
{
throw new InvalidOperationException("A normal user cant add permissions");
}
}
public class SpecialUser : BaseUser
{
public override void AddPerm(Perm perm)
{
if(permissions==null) permissions=new List<Perm>();
this.permissions.Add(perm);
}
}
class Container
{
List<BaseUser> users;
}
的所需要的结构:
- 容器将保留两个类型的用户
- SpecialUser将有加权限的功能 - 完成
普通用户将不被允许添加权限 - 完成
我选择的战略格局,以实现上述
我无法实现的事情是
用户的两种类型将被从数据库(用户将使用的默认权限列表进行初始化)水合
我在这种情况下选择这种模式的权利?如果是,那我该如何解决要求4?
非常感谢, asolvent
我在这里看不到策略模式。你只需从一个公共基类中派生出两个类。你的问题似乎是关于数据访问的,所以你至少要指定你使用哪种技术访问数据库并显示一些相关的代码。 关于你的AddPerm方法:我不会在基类中声明它,而只是在SpecialUser类中声明它。所以很清楚,客户端不能在NormalUser类型的用户上调用它。 – Jan 2011-12-29 09:12:56
嗨,谢谢你的回复。我称之为策略,因为用户将是特殊的或正常的。该容器具有用户列表(特殊+普通)。我可能是错的,但不是我们如何实施战略? (如果我的解释不正确,请指导,如果我的解释不正确) 如果我决定将该方法放在子类中,那么我将无法通过父类调用它,最终我最终会得到2个不同的集合。 – asolvent 2011-12-29 10:11:53