调解员设计模式

时间:2012-08-21 13:18:01

标签: design-patterns class-diagram

在我的系统中,我有2个类:User和LoginUser类。 LoginUser是User的子级。两个对象之间可能存在各种通信(朋友请求,照片请求者,朋友请求接受等) - 用户和登录用户。在LoginUser的成员资格的基础上,有各种安全权限,并根据这些权限,将有不同的消息。

我应该为给定的场景使用哪种设计模式?我在考虑使用Mediator设计模式。

1 个答案:

答案 0 :(得分:1)

这不是一个真正的设计模式,但我会将这两个概念分开:权限和用户信息。

从可读性的角度来看,当我看到一个子类时,我通常会假设还有一些其他互斥的子类。例如,如果我看到一个Animal接口和一个MeatEater子类,我会假设在其他地方有一个VeggieEater子类。 LoginUser是一个子类,而所有用户都是LoginUser的事实让我觉得不自然。

从设计的角度来看,您的LoginUser有2个不同的职责:
1)用户级别信息,如用户名,电子邮件,朋友等 2)确定权限

我会尝试解决这个问题。如

public class User { 
  // keep info in here 
  private String username;
  private String email;
}


public class Authorization {
   // this will determine access
   public Authorization(User user) { this.user = user; }

   public boolean isAccessAllowed(String someAction) { // ... }
}

这样的事情会破坏不同的责任。