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

02-09-18 banq
    

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

    

cc
2002-09-23 15:09

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

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

浆糊
2002-09-23 15:36

作过一个forum,用到了struts,cmp2,cmr

感觉struts的开发层次分的比较清楚,减少了耦合,但是增加了开发量

richardluopeng
2002-10-14 13:39

cmr

是什么,请教!

浆糊
2002-10-14 14:00

看一下ejb2.0就知道了