<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 117  文章 - 72  trackbacks - 0

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

    常用鏈接

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

    訂閱

    訂閱

    留言簿(7)

    隨筆分類(130)

    隨筆檔案(123)

    搜索

    •  

    積分與排名

    • 積分 - 156629
    • 排名 - 390

    最新評論

    [關鍵字]:java,design pattern,設計模式,《Java與模式》學習,composite,合成模式
    [環境]:StarUML5.0 + JDK6
    [作者]:Winty (wintys@gmail.com) http://www.tkk7.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 天堂露珠 閱讀(981) 評論(0)  編輯  收藏 所屬分類: Pattern
    主站蜘蛛池模板: 久久精品亚洲福利| 亚洲男人天堂影院| 午夜影院免费观看| 亚洲AV无码一区二区三区在线| 成年女性特黄午夜视频免费看| 真人无码作爱免费视频| 亚洲国产精品无码AAA片| 国产片AV片永久免费观看| 国产精品亚洲综合网站| 亚洲v高清理论电影| 成全影视免费观看大全二| 中国一级毛片免费看视频| 亚洲冬月枫中文字幕在线看| 亚洲av无码成人精品区| 久久久久久AV无码免费网站| 亚洲精品欧美综合四区| 亚洲av中文无码乱人伦在线r▽| 97视频热人人精品免费| 在线观看黄片免费入口不卡| 亚洲精品无码不卡在线播放| 国产精一品亚洲二区在线播放| 最新中文字幕电影免费观看| 男人j进入女人j内部免费网站| 亚洲AV无码一区二区三区性色| 亚洲精品无码不卡| 全亚洲最新黄色特级网站| 99无码人妻一区二区三区免费| 免费又黄又爽又猛大片午夜| 亚洲欧洲日产韩国在线| 国产亚洲情侣一区二区无| 四虎免费在线观看| 99久久免费精品高清特色大片| 一二三四在线观看免费中文在线观看 | 亚洲中文字幕无码中文字| 亚洲产国偷V产偷V自拍色戒| 国产精品无码免费视频二三区| 啦啦啦完整版免费视频在线观看 | 四虎影院免费在线播放| 91av视频免费在线观看| 中文字幕无码免费久久9一区9 | 午夜性色一区二区三区免费不卡视频|