我有不同类型的用户,它们都继承自父类用户:
class User(string username, string password){...}
class UserAdmin(string username, string password) extends User{
...
// new methods
}
class User(string username, string password) extends User{
...
// new methods
}
我有一个登录的方法,但问题是,如果我用useradmin的凭据登录,我想返回useradmin,对于user的所有其他子类也是一样的。
public User login(String userName, String password) {
for (User user : usersList) {
if (user.isCorrectLogin(userName, password)) {
return user;
}
}
throw new RuntimeException("Login failed !");
}
我该怎么做?我应该为每种类型的用户提供多个login()方法吗?或者有没有一种不同的方法来设计用户,让他们一开始就不存在这个问题?
1条答案
按热度按时间ivqmmu1c1#
对于您的用例来说,一个单一的登录方法应该很好,但是您应该做的是确保正确的登录类型
User
已经在usersList
. 例如:这样,你现有的
login
方法将自动返回正确的类型。如果要检查返回值是否属于特定类型,可以使用
instanceof
操作员:不过,还有其他几种方法可以做到这一点。您可以简单地让每个特定的用户类型返回它所拥有的一组角色,这样您就可以避免
instanceof
总共:那么你的逻辑就会变成: