隨筆 - 117  文章 - 72  trackbacks - 0

          聲明:原創作品(標有[原]字樣)轉載時請注明出處,謝謝。

          常用鏈接

          常用設置
          常用軟件
          常用命令
           

          訂閱

          訂閱

          留言簿(7)

          隨筆分類(130)

          隨筆檔案(123)

          搜索

          •  

          積分與排名

          • 積分 - 156397
          • 排名 - 390

          最新評論

          [關鍵字]:java,design pattern,設計模式,《Java與模式》學習,composite,合成模式
          [環境]:StarUML5.0 + JDK6
          [作者]:Winty (wintys@gmail.com) http://www.aygfsteel.com/wintys/
          [正文]:
          安全的合成模式

          package pattern.composite.safe;

          import java.util.*;
          /**
           * 安全的合成模式:Composite Pattern
           * @version 2009-6-3
           * @author Winty(wintys@gmail.com)
           */
          public class SafeCompositeTest{
              public static void main(String[] args){
                  Graphics g1 , g2;
                  Picture p1 , p2;

                  g1 = new Line();
                  g2 = new Circle();
                  p1 = new Picture();
                  p2 = new Picture();

                  g1.draw();
                  g2.draw();
                  System.out.println("");

                  p1.add(g1);
                  p1.add(g2);
                  p1.draw();
                  System.out.println("");

                  p2.add(g1);
                  p2.add(g2);
                  p2.add(p1);
                  p2.draw();
              }
          }

          /**
           * 抽象Component角色
           */
          interface Graphics{
              void draw();
          }

          /**
           * Leaf角色
           */
          class Line implements Graphics{
              @Override
              public void draw(){
                  System.out.println("draw a line.");
              }
          }

          /**
            * Leaf角色
            */
          class Circle implements Graphics{
              @Override
              public void draw(){
                  System.out.println("draw a circle");
              }
          }


          /**
           * Composite角色
           */
          class Picture implements Graphics{
              private List<Graphics> graphics;

              public Picture(){
                  graphics = new ArrayList<Graphics>();
              }

              @Override
              public void draw(){
                  Iterator<Graphics> it = graphics.iterator();
                  while(it.hasNext()){
                      Graphics g = it.next();
                      g.draw();
                  }
              }

              public void add(Graphics g){
                  graphics.add(g);
              }

              public void remove(int i){
                  graphics.remove(i);
              }

              public Graphics getChild(int i){
                  return graphics.get(i);
              }
          }
          運行結果:

          draw a line.
          draw a circle

          draw a line.
          draw a circle

          draw a line.
          draw a circle
          draw a line.
          draw a circle
          posted on 2009-06-08 22:27 天堂露珠 閱讀(1151) 評論(3)  編輯  收藏 所屬分類: Pattern

          FeedBack:
          # re: [原]合成模式-安全的 2009-06-09 17:16 找個美女做老婆
          我的博客搬到新家了 http://www.javaly.cn, 順便給你推薦一個導航網站 http://www.510gougou.com  回復  更多評論
            
          # re: [原]合成模式-安全的 2009-06-13 09:43 metadmin
          安全表現在哪里呢?


          ---------------------------------
          解開權限與業務耦合,提高開發效率
          細粒度權限管理軟件 試用版下載
          http://www.metadmin.com

            回復  更多評論
            
          # re: [原]合成模式-安全的 2009-06-13 10:49 天堂露珠
          @metadmin
          只是一個例子,相關的理論請參考《Java與模式》。  回復  更多評論
            
          主站蜘蛛池模板: 长海县| 峡江县| 呼伦贝尔市| 岳西县| 磐安县| 尖扎县| 彭州市| 齐齐哈尔市| 岳普湖县| 友谊县| 贺州市| 三亚市| 阿拉尔市| 浦城县| 汨罗市| 日土县| 泰顺县| 长汀县| 平陆县| 庆安县| 绥芬河市| 定州市| 沽源县| 兴隆县| 屯昌县| 杨浦区| 荃湾区| 云阳县| 新津县| 沾化县| 鹤岗市| 商丘市| 铜鼓县| 贵南县| 合肥市| 镇康县| 丹凤县| 嫩江县| 岑溪市| 吴堡县| 廊坊市|