這是我遇到的一類問題的例子。生成網頁時使用多態嗎?
當用戶有兩種可能涉及到我的應用程序的主頁,他/她是:登錄
沒有登錄
- 如果用戶登錄我想在右上角顯示用戶名和一個說「註銷」的鏈接。如果用戶沒有登錄,我想顯示「登錄或註冊」鏈接。
此前我會從JSP中調用一些代碼,它會返回一段適當的HTML代碼,我會將其粘貼到頁面中。但這可能不是最好的做法,雖然它很簡單。
現在我相信我應該將首頁的初始請求發送給一個servlet(而不是jsp),它將實例化一些類型爲「HomePage」的對象,它具有子類「LoggedInHomePage」和「NotLoggedInHomePage」,具體取決於用戶id在會話變量中可用。我將不得不用if或case語句來確定正確的構造函數。
到目前爲止看起來整潔。但是在這一點上它又變得混亂了,因爲我現在需要知道我的「Request對象」中是否提供了userId,我需要使用一些if語句,或者我使用了不同的jsp模板,這意味着有兩個幾乎相同的jsps坐在服務器上爲每一頁。
既不顯得優雅。最受讚賞的幫助。如果你對這個問題有一個很好的解決方案,請忽略我的描述,並且說出來,我不介意把我在這裏提出的任何想法扔掉。
感謝我將做的一個改變是我將返回一個鏈接對象列表,因爲問題是在一種情況下我有一個單一的鏈接(註冊),在另一種情況下,我有兩個鏈接(用戶名,註銷)。謝謝。 – Ankur 2010-09-22 10:05:54