隨筆 - 117  文章 - 72  trackbacks - 0

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

          常用鏈接

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

          訂閱

          訂閱

          留言簿(7)

          隨筆分類(130)

          隨筆檔案(123)

          搜索

          •  

          積分與排名

          • 積分 - 155795
          • 排名 - 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 天堂露珠 閱讀(1147) 評論(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與模式》。  回復  更多評論
            
          主站蜘蛛池模板: 阜城县| 威海市| 汪清县| 新源县| 德格县| 肃南| 宜宾县| 陆川县| 浏阳市| 潜山县| 恩施市| 安徽省| 芮城县| 无锡市| 香河县| 和林格尔县| 密云县| 鹤山市| 祁阳县| 平阳县| 广安市| 勃利县| 平谷区| 集贤县| 曲靖市| 大城县| 集安市| 龙井市| 广丰县| 台江县| 陕西省| 琼结县| 平南县| 永福县| 长宁县| 周宁县| 宜兰县| 北辰区| 昭通市| 万宁市| 凉城县|