这是我遇到的一类问题的例子。生成网页时使用多态吗?
当用户有两种可能涉及到我的应用程序的主页,他/她是:登录
没有登录
- 如果用户登录我想在右上角显示用户名和一个说“注销”的链接。如果用户没有登录,我想显示“登录或注册”链接。
此前我会从JSP中调用一些代码,它会返回一段适当的HTML代码,我会将其粘贴到页面中。但这可能不是最好的做法,虽然它很简单。
现在我相信我应该将首页的初始请求发送给一个servlet(而不是jsp),它将实例化一些类型为“HomePage”的对象,它具有子类“LoggedInHomePage”和“NotLoggedInHomePage”,具体取决于用户id在会话变量中可用。我将不得不用if或case语句来确定正确的构造函数。
到目前为止看起来整洁。但是在这一点上它又变得混乱了,因为我现在需要知道我的“Request对象”中是否提供了userId,我需要使用一些if语句,或者我使用了不同的jsp模板,这意味着有两个几乎相同的jsps坐在服务器上为每一页。
既不显得优雅。最受赞赏的帮助。如果你对这个问题有一个很好的解决方案,请忽略我的描述,并且说出来,我不介意把我在这里提出的任何想法扔掉。
感谢我将做的一个改变是我将返回一个链接对象列表,因为问题是在一种情况下我有一个单一的链接(注册),在另一种情况下,我有两个链接(用户名,注销)。谢谢。 – Ankur 2010-09-22 10:05:54