設計模式建議將不勝感激;我需要得到以下2個細節:Java方法設計模式
1)認證結果(真,假) 2)需要更新密碼(真假)
沒有爲上述2個條件一個SQL查詢。
我應該用2個單獨的SQL查詢編寫兩個單獨的方法嗎?
還是1方法?如果使用1方法,它將是一個HashMap,它看起來不太優雅。
設計模式建議將不勝感激;我需要得到以下2個細節:Java方法設計模式
1)認證結果(真,假) 2)需要更新密碼(真假)
沒有爲上述2個條件一個SQL查詢。
我應該用2個單獨的SQL查詢編寫兩個單獨的方法嗎?
還是1方法?如果使用1方法,它將是一個HashMap,它看起來不太優雅。
我會使用一個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而不必更改太多其他信息。
分開這兩個功能。它更具可讀性並且更具可擴展性。
例如,如果稍後您希望人們每6個月更新一次密碼,會發生什麼情況?你可以調用「require_password_update」函數而不用處理認證的開銷。
其實這取決於。兩次運行相同的查詢肯定比較慢。特別是如果兩個值都來自相同的請求。 –
返回將有兩個或更多屬性(認證結果,更新密碼等)的對象。
創建一個類,如:
public class AuthenticationResult {
private boolean authenticated;
private boolean mustChangePassword;
// getters and setters
}
然後從你的身份驗證方法返回此對象。
你到底在問什麼?而SQL查詢又如何適應這一點? – Jochen
「設計模式」是一種表達方式。 –