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

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

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

    結(jié)構(gòu)模式之Composite——合成(部分-整體)模式實(shí)例

        上一篇,總結(jié)了結(jié)構(gòu)模式的一些特點(diǎn),這一篇分別介紹兩種方式的實(shí)現(xiàn)。
       
        這里我們用繪圖這個(gè)例子來(lái)說(shuō)明Composite模式,通過(guò)一些基本圖像元素(直線、圓等)以及一些復(fù)合圖像元素(由基本圖像元素組合而成)構(gòu)建復(fù)雜的圖形樹(shù)。在設(shè)計(jì)中我們對(duì)每一個(gè)對(duì)象都配備一個(gè)draw()方法,在調(diào)用時(shí),會(huì)顯示相關(guān)的圖形。可以看到,這里復(fù)合圖像元素(Picture1、Picture)它在充當(dāng)對(duì)象的同時(shí),又是那些基本圖像元素的一個(gè)容器。
       
        透明方式:
        根節(jié)點(diǎn):
    package composite;

    public interface Graphics1 {
        
    void draw();

        
    void add(Graphics1 g);

        
    void remove(Graphics1 g);

        Graphics1 gotChild(
    int i);
    }

        樹(shù)葉節(jié)點(diǎn):
    package composite;

    public class Line1 implements Graphics1 {
        
    public void draw(){
            System.out.println(
    "Drawing Line");
        }

        
    public void add(Graphics1 g){
           
    return;
        }

        
    public void remove(Graphics1 g){
             
    return;
        }

        
    public Graphics1 gotChild(int i){
             
    return null;
        }
    }

    package composite;

    public class Circle1 implements Graphics1 {
        
    public void draw(){
            System.out.println(
    "Drawing Circle");
        }

       
    public void add(Graphics1 g){
           
    return;
        }

        
    public void remove(Graphics1 g){
             
    return;
        }

        
    public Graphics1 gotChild(int i){
             
    return null;
        }
    }

    package composite;

    public class Rectangle1 implements Graphics1 {
        
    public void draw(){
             System.out.println(
    "Drawing Rectangle");
        }

       
    public void add(Graphics1 g){
           
    return;
        }

        
    public void remove(Graphics1 g){
             
    return;
        }

        
    public Graphics1 gotChild(int i){
             
    return null;
        }
    }

        樹(shù)枝節(jié)點(diǎn):
    package composite;
    import java.util.Vector;

    public class Picture1 implements Graphics1 {
        
    private Vector list = new Vector(10);

        
    public void draw(){
            
    for (int i = 0; i < list.size(); i++) {
                Graphics1 g 
    = (Graphics1) list.get(i);
                g.draw();
            }
        }

        
    public void add(Graphics1 g){
            list.add(g);
        }

        
    public void remove(Graphics1 g){
            list.remove(g);
        }

        
    public Graphics1 gotChild(int i){
            
    return (Graphics1)list.get(i);
        }
    }

        客戶(hù)端調(diào)用:
    package composite;

    public class Client1 {

        
    private static Picture1 picture= new Picture1();
        
    public static void main(String[] args){
           picture.add(
    new Circle1());
           picture.add(
    new Line1());
           picture.add(
    new Rectangle1());
           picture.draw();
        }
    }

       安全方式:
        根節(jié)點(diǎn):
    package composite;

    public interface Graphics {
        
    void draw();
    }

        樹(shù)葉節(jié)點(diǎn):
    package composite;

    public class Circle implements Graphics {
        
    public void draw(){
            System.out.println(
    "Drawing Circle");
        }
    }

    package composite;

    public class Line implements Graphics {
        
    public void draw(){
            System.out.println(
    "Drawing Line");
        }
    }


    package composite;

    public class Rectangle implements Graphics {
        
    public void draw(){
             System.out.println(
    "Drawing Rectangle");
        }
    }

        樹(shù)枝節(jié)點(diǎn):
    package composite;
    import java.util.Vector;

    public class Picture implements Graphics {
        
    private Vector list = new Vector(10);

        
    public void draw(){
            
    for (int i = 0; i < list.size(); i++) {
                Graphics g 
    = (Graphics) list.get(i);
                g.draw();
            }
        }

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

        
    public void remove(Graphics g){
            list.remove(g);
        }

        
    public Graphics gotChild(int i){
            
    return (Graphics)list.get(i);
        }
    }

        客戶(hù)端調(diào)用:
    package composite;

    public class Client {

        
    private static Picture picture= new Picture();
        
    public static void main(String args[]){
           picture.add(
    new Circle());
           picture.add(
    new Line());
           picture.add(
    new Rectangle());
           picture.draw();
        }
    }


    posted on 2008-06-23 23:11 云淡風(fēng)清 閱讀(432) 評(píng)論(1)  編輯  收藏 所屬分類(lèi): Design Patterns

    評(píng)論

    # re: 結(jié)構(gòu)模式之Composite——合成(部分-整體)模式實(shí)例 2008-06-24 09:36 davymemory

    你好,我是IT獵頭Camille,主要負(fù)責(zé)上海地區(qū)IT方面的職位。希望以后大家一起在職業(yè)路上共同進(jìn)步。不介意的話請(qǐng)加我的MSN:davycamille@hotmail.com  回復(fù)  更多評(píng)論   

    <2008年6月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(1)

    隨筆分類(lèi)(15)

    隨筆檔案(15)

    收藏夾(1)

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 国产亚洲色婷婷久久99精品| 永久在线免费观看| 曰批免费视频播放在线看片二| 亚洲综合色7777情网站777| 亚洲精品第一国产综合精品| 亚洲精品在线视频观看| 亚洲精品一区二区三区四区乱码 | 69式互添免费视频| 久久w5ww成w人免费| 99在线视频免费| 最近中文字幕完整版免费高清| 日韩在线永久免费播放| 久久免费动漫品精老司机| 久久一区二区三区免费播放| 日韩免费无码一区二区三区| 中文字幕在线观看免费视频| 青青草a免费线观a| 最近最新中文字幕完整版免费高清| 无码人妻久久一区二区三区免费丨 | 在线观看亚洲人成网站| 亚洲春色另类小说| 国产 亚洲 中文在线 字幕| 亚洲精品国产摄像头| 国产av无码专区亚洲av毛片搜 | 自拍日韩亚洲一区在线| 亚洲日韩AV一区二区三区四区| 亚洲国产精品无码久久九九大片| 爱爱帝国亚洲一区二区三区| 久香草视频在线观看免费| a毛片全部免费播放| 亚洲午夜免费视频| 嫩草影院在线免费观看| 免费中文字幕不卡视频| 亚洲成AV人片在线观看无码 | 亚洲综合网站色欲色欲| 亚洲国产女人aaa毛片在线| 亚洲高清中文字幕免费| 免费一级做a爰片久久毛片潮| 国产精品网站在线观看免费传媒 | 日本道免费精品一区二区| 99久久久国产精品免费蜜臀|