问题
我对设计模式相当陌生,并且一直在研究这本书,Head First Design Patterns。我需要实现一个有3种用户的系统:会员,主持人,管理员。主持人可以执行会员可以执行的所有操作,还可以添加其他内容,管理员可以执行主持人可以执行的所有操作,还可以添加其他内容。我已经对接口和类如何实现这一点作了基本的描述;没有经验,我需要SO社区关于这种设计的建议 - 无论是太臃肿还是愚蠢,还是需要更正。所以请耐心等待。
可能的解决方法
这里是接口:
public interface AdminBehavior
{
public addUser();
public deleteUser();
}
public interface ModeratorBehavior
{
public blockUser();
public deletePost();
}行为类:
public class AdminBehaviors implements AdminBehavior
{
public addUser() {
...
}
public deleteUser() {
...
}
}
public class NoAdminBehaviors implements AdminBehavior
{
public addUser() {
...//cannot do
}
public deleteUser() {
...//cannot do
}
}
+ Same as above done for Moderators...classes ModeratorBehaviors and NoModeratorBehaviors实际的用户类别:
public class Member
{
protected ModeratorBehavior moderatorBehavior;
protected AdminBehavior adminBehavior;
public Member() {
moderatorBehavior = new NoModeratorBehavior();
adminBehavior = new NoAdminBehavior();
}
public login() {
...
}
public logout() {
...
}
public post() {
...
}
public comment() {
...
}
//Moderator priv'ed actions
public blockUser() {
moderatorBehavior.blockUser();
}
public deletePost() {
moderatorBehavior.deletePost();
}
//Admin priv'ed actions
public addUser() {
adminBehavior.addUser();
}
public deleteUser() {
adminBehavior.deleteUser();
}
}
public class Moderator extends Member
{
public Moderator() {
moderatorBehavior = new ModeratorBehavior();
adminBehavior = new NoAdminBehavior();
}
}
public class Admin extends Moderator ((or Member?))
{
public Admin() {
moderatorBehavior = new ModeratorBehavior();
adminBehavior = new AdminBehavior();
}
}就我个人而言,我觉得这似乎有点过度或混乱......更好的方法来做到这一点?