隨筆 - 117  文章 - 72  trackbacks - 0

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

          常用鏈接

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

          訂閱

          訂閱

          留言簿(7)

          隨筆分類(130)

          隨筆檔案(123)

          搜索

          •  

          積分與排名

          • 積分 - 156115
          • 排名 - 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
          主站蜘蛛池模板: 盈江县| 望江县| 沙田区| 信宜市| 潍坊市| 昌吉市| 珲春市| 皮山县| 汉川市| 库尔勒市| 邻水| 新绛县| 许昌市| 惠来县| 河源市| 达州市| 喜德县| 耿马| 丁青县| 平安县| 聂拉木县| 泸水县| 丹寨县| 临桂县| 郧西县| 宁德市| 廊坊市| 醴陵市| 蚌埠市| 航空| 韶山市| 鸡泽县| 晴隆县| 贵定县| 朝阳县| 永城市| 安岳县| 台南市| 阿拉善左旗| 城固县| 天水市|