推荐文章:composite模式在struts表现层的应用

Composite模式是将树形结构的树枝(composite,还有分支)和叶(primitive 没有分支)同等对待,这样就减少系统的复杂性.

这篇文章从jsp页面布局到struts的composite模式,谈得蛮多,重点部分我觉得好像不是很明确。

他说在struts的Tiles技术中,为取得如下页面:

下列xml代码里使用了Composite模式:



<!DOCTYPE tiles-definitions PUBLIC
"-//Apache Software Foundation//DTD Tiles Configuration//EN"
"http://jakarta.apache.org/struts/dtds/tiles-config.dtd">

<tiles-definitions>
<!-- 这是个组合-->
<definition name='sidebar-definition'
path='sidebar-layout.jsp'>
<put name='top' value='flags.jsp'/>
<put name='bottom' value='sidebar-links.jsp'/>
</definition>

<definition name='sidebar-header-footer-definition'
path='header-footer-sidebar-layout.jsp'>
<!--访问sidebar-definition 和访问下面的header一样,就象
访问单个Jsp页面,所以这里是composite模式-->
<put name='sidebar' value='sidebar-definition'
type='definition'/>

<put name='header' value='header.jsp'/>
<put name='content' value='content.jsp'/>
<put name='footer' value='footer.jsp'/>
</definition>
</tiles-definitions>

其实我觉得 之所以能达到"访问sidebar-definition 和访问下面的header一样,就象访问单个Jsp页面,",这是因为使用了taglib技术才有的客观效果,如果把这个客观效果也归纳为设计模式,那么设计模式不是太多了?我觉得作者是个“泛设计模式主义者”。呵呵

不过,作者在文章中,从include到struct的taglib写得很全面,平时我们偷懒,界面上就使用include header.jsp或include footer.jsp就可以了,虽然这重用了页头页尾的内容,但是这并不能重用layout布局,重用布局是个让人不容易理解的东西,重用布局就是多个页面使用同一个布局,这又类似html中的frame,其实,struts的重用布局概念就类似html的frame。

如果我们在表现层又要重用内容和布局,那么毫无疑问使用struts的Tiles技术,而复杂Tiles技术中常常有composite模式。

文章网址按下面:


A look at the Composite design pattern

大体上看了一遍,并不难理解,关键是怎么应用上。

structs你怎么看?你觉得jdon能应用上它么?

作过一个forum,用到了struts,cmp2,cmr
感觉struts的开发层次分的比较清楚,减少了耦合,但是增加了开发量

cmr
是什么,请教!

看一下ejb2.0就知道了