JAVA & XML & JAVASCRIPT & AJAX & CSS

Web 2.0 技术储备............

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  77 随笔 :: 17 文章 :: 116 评论 :: 0 Trackbacks
 1 var Node = function( nodeValue )
 2 {
 3     var value = nodeValue;
 4     
 5     var deep  = 0;
 6     
 7     var childs = new Array();
 8     
 9     /** 取得深度 **/
10     this.getDeep = function()
11     {
12         return deep;
13     }
14     
15     /** 设置深度 **/
16     this.setDeep = function( nodeDeep )
17     {
18         deep = nodeDeep;
19     }
20 
21     /** 获取值 **/
22     this.getValue = function()
23     {
24         return value;
25     }
26 
27     /** 添加子节点 **/
28     this.appendChild = function ( node )
29     {
30         node.setDeep( deep + 1 );
31         childs.push( node );
32         return node;
33     }
34 
35     /** 所有子节点 **/
36     this.childNodes = function()
37     {
38         return childs;
39     }
40     
41     /*是否包含子节点*/
42     this.hasChild = function()
43     {
44         return childs.length > 0 ;
45     }
46 
47     /*遍历*/
48     this.walk = function( visitor )
49     {
50         visitor.visite( this );
51     }
52 }
53 
54 /* 访问者 */    
55 var Visitor = function ()
56 {
57     this.visiteResult = "";
58     
59     this.visite = function ( node )
60     {
61         //window.alert( "深度 = " + node.getDeep() +  "     " + node.getValue() );
62         this.visiteResult += " 深度 =&nbsp;&nbsp;&nbsp;&nbsp;" + node.getDeep() +  "&nbsp;&nbsp;&nbsp;&nbsp; Value&nbsp;=&nbsp;" + node.getValue() + "<br/>";
63         if( node.hasChild() )
64         {
65             this.visiteChildNodes( node );
66         }
67     }
68     
69     this.visiteChildNodes = function( node )
70     {
71         var nodes = node.childNodes();
72         forvar i = 0 ; i < nodes.length ; i++ )
73         {
74             this.visite( nodes[i] );
75         }
76     }
77 }

代码测试 :

 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 2 <html xmlns="http://www.w3.org/1999/xhtml">
 3 <head>
 4 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
 5 <title></title>
 6 <script language="javascript">
 7 /* 遍历 */
 8 function doWalk( startNode )
 9 {
10     var visitor = new Visitor();
11     startNode.walk( visitor );
12     document.getElementById("VisiteResult").innerHTML = visitor.visiteResult;
13 }
14 
15 /*初始化一些数据*/    
16 var root = new Node("大爷root ");
17 var node2 = root.appendChild( new Node("大爷2号") );
18             root.appendChild( new Node("大爷3号") );
19             root.appendChild( new Node("大爷9号") );
20 var node4 = node2.appendChild( new Node("大爷4号")  );
21 var node5 = node2.appendChild( new Node("大爷5号")  );
22             node2.appendChild( new Node("大爷6号")  );
23 node4.appendChild( new Node("大爷7号")  );
24 node5.appendChild( new Node("大爷8号")  );    
25 </script>
26 </head>
27 
28 <body>
29 <table width="60%" align="center">
30     <tr>
31         <th height="30" align="center" valign="middle">左递归[深度优先遍历]</th>
32     </tr>
33     <tr>
34         <td height="30" align="left" valign="middle">
35         var root = new Node("大爷root ");<br />
36         var node2 = root.appendChild( new Node("大爷2号") );<br />
37                     root.appendChild( new Node("大爷3号") );<br />
38                     root.appendChild( new Node("大爷9号") );<br />
39         var node4 = node2.appendChild( new Node("大爷4号")  );<br />
40         var node5 = node2.appendChild( new Node("大爷5号")  );<br />
41                     node2.appendChild( new Node("大爷6号")  );<br />
42         node4.appendChild( new Node("大爷7号")  );<br />
43         node5.appendChild( new Node("大爷8号")  );<br />
44         </td>
45     </tr>
46     <tr>
47         <td height="50" align="center" valign="middle">
48         <input type="button" value=" 遍 历 "  onclick="javascript:doWalk( root )" />
49         </td>
50     </tr>
51     <tr>
52         <td id="VisiteResult" height="100" align="left" valign="middle">
53         </td>
54     </tr>
55 </table>
56 </body>
57 </html>
58 

Javascript 弱类型的好处~~  想怎么写就怎么写~ 好爽哇! 可以不显示的实现 Visitor 和 Visitable 接口。


代码下载...........
代码下载...........
代码下载...........
posted on 2006-10-25 22:47 Web 2.0 技术资源 阅读(5478) 评论(3)  编辑  收藏 所属分类: Javascript

评论

# re: Javascript 中的 Visitor 模式 → 实现树型结构任意节点遍历................ 2006-10-25 23:13 Web 2.0 技术资源
没实现 Visitor 和 Visitable 接口的 Visitor 模式.......

哈哈........ 感觉已经变成简单的策略模式了........

实在不好意思......... 有点变味了.........   回复  更多评论
  

# re: Javascript 中的 Visitor 模式 → 实现树型结构任意节点遍历................ 2006-10-26 15:10 搞挨踢的
qq我恨你!  回复  更多评论
  

# re: Javascript 中的 Visitor 模式 → 实现树型结构任意节点遍历................ 2007-10-30 21:07 创世纪计算机资源网
楼主真强~  回复  更多评论
  


只有注册用户登录后才能发表评论。


网站导航: