浏览 2510 次
锁定老帖子 主题:老生常谈:表现逻辑与业务逻辑的分离
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-09-17
表现逻辑和业务逻辑的具体定义不再叙述,我各举一个例子,毕竟具体的例子更容易让人明白.比如,web页面上要显示新闻的列表,要求奇数行显示为红色,偶数行显示为白色,这样的就是表现逻辑;再看这样的需求:web页面上列出用户的头像和用户名,头像和用户名都有超连接,连接到用户的个人主页,连接地址是http://www.xx.com/user/125或者http://www.xx.com/user/robin/,也就是如果用户有用户名,则用用户名为地址,否则就用其id为地址.这样的逻辑可以算业务逻辑.其实有时候业务逻辑和表现逻辑是很难明确区分的,更多的时候需要经验. 认清了业务逻辑和表现逻辑,我们就要使她们分离.要做到分离,就要在视图层只写表现逻辑,而把业务逻辑放到业务层代码里去实现.对于上面例子中的需求2有两种方法来实现,一种是不分离的,一种是分离的,如下(我就用veloctiy的语法写吧): 假设resultList里是用户对象TUser,里面有name 和id等属性. 第一种(没分离的): #foreach($result in $resultList) #if($result.name != '') <a href="/user/$result.name">$!result.name</a> #else <a href="/user/$result.id">$!result.id</a> #end #end 第二种(分离的): 先在TUser中写个方法,叫getLink(),代码如下: public String getLink() { if(!this.name.equals("")) { return this.name; }else { return this.id.toString(); } } 再看web页面的实现: #foreach($result in $resultList) <a href="/user/$result.link">$!result.name</a> #end 显然第2种方法简化了页面的逻辑,到这里,这篇文章该画句号了,希望对初学者有所帮助,这种肤浅的文章我还是发到入门讨论里好了. 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-09-17
你的头像真强!
|
|
返回顶楼 | |