2012-06-12 215 views
-1

设计模式建议将不胜感激;我需要得到以下2个细节:Java方法设计模式

1)认证结果(真,假) 2)需要更新密码(真假)

没有为上述2个条件一个SQL查询。

我应该用2个单独的SQL查询编写两个单独的方法吗?

还是1方法?如果使用1方法,它将是一个HashMap,它看起来不太优雅。

+1

你到底在问什么?而SQL查询又如何适应这一点? – Jochen

+0

“设计模式”是一种表达方式。 –

回答

1

我会使用一个POJO:

public class LoginState implements Serializable { 
    private boolean isLoggedIn; 
    private boolean isUpdateRequired; 
    public LoginState() { 
     this(false, false); 
    } 
    public LoginState(boolean isLoggedIn, boolean isUpdateRequired) { 
     this.isLoggedIn = isLoggedIn; 
     this.isUpdateRequired = isUpdateRequired; 
    } 
    // getters and setters 
} 

然后,你可以写一个方法返回该POJO,其中将包括两条信息。此外,它很容易扩展,所以如果你想添加可以通过单个调用返回的附加信息(例如,最后一次登录时间或IP),只需将这些字段添加到POJO而不必更改太多其他信息。

1

分开这两个功能。它更具可读性并且更具可扩展性。

例如,如果稍后您希望人们每6个月更新一次密码,会发生什么情况?你可以调用“require_password_update”函数而不用处理认证的开销。

+1

其实这取决于。两次运行相同的查询肯定比较慢。特别是如果两个值都来自相同的请求。 –

1

返回将有两个或更多属性(认证结果,更新密码等)的对象。

0

创建一个类,如:

public class AuthenticationResult { 

    private boolean authenticated; 
    private boolean mustChangePassword; 

    // getters and setters 

} 

然后从你的身份验证方法返回此对象。