これは実際には設計パターンではありませんが、特権とユーザー情報という 2 つの概念を分割します。
読みやすさの観点から、サブクラスを見ると、通常、相互に排他的なサブクラスが他にあると想定します。たとえば、Animal インターフェイスと MeatEater サブクラスが表示された場合、VeggieEater サブクラスが別の場所にあると想定します。LoginUser がサブクラスであり、すべての User が 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) { // ... }
}
このようなものは、明確な責任を分割します。