2012-06-12 130 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 

} 

然後從你的身份驗證方法返回此對象。