隨筆 - 117  文章 - 72  trackbacks - 0

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

          常用鏈接

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

          訂閱

          訂閱

          留言簿(7)

          隨筆分類(130)

          隨筆檔案(123)

          搜索

          •  

          積分與排名

          • 積分 - 156127
          • 排名 - 390

          最新評論

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

          package pattern.composite.transparent;

          import java.util.*;
          /**
           * 透明的合成模式:Composite Pattern
           * @version 2009-6-3
           * @author Winty(wintys@gmail.com)
           */
          public class TransparentCompositeTest{
              public static void main(String[] args){
                  Graphics g1 , g2;
                  Graphics 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();

              void add(Graphics g);
              void remove(int i);
              Graphics getChild(int i);
          }

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

              @Override
              public void add(Graphics g){
              }

              @Override
              public void remove(int i){
              }

              @Override
              public Graphics getChild(int i){
                  return null;
              }
          }

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

              @Override
              public void add(Graphics g){
              }

              @Override
              public void remove(int i){
              }

              @Override
              public Graphics getChild(int i){
                  return null;
              }
          }

          /**
           * 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();
                  }
              }

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

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

              @Override
              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:23 天堂露珠 閱讀(978) 評論(0)  編輯  收藏 所屬分類: Pattern
          主站蜘蛛池模板: 崇左市| 防城港市| 庆安县| 五寨县| 农安县| 阿克苏市| 博白县| 通河县| 班戈县| 侯马市| 晴隆县| 安徽省| 淅川县| 堆龙德庆县| 德庆县| 马尔康县| 枣强县| 平遥县| 惠东县| 永顺县| 犍为县| 石嘴山市| 江源县| 保德县| 吉林省| 舒城县| 枣庄市| 扬州市| 怀来县| 彭阳县| 弥渡县| 沙坪坝区| 西乡县| 涟源市| 凌海市| 宝兴县| 平山县| 西青区| 自治县| 松原市| 肇庆市|