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

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

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

    隨筆-348  評論-598  文章-0  trackbacks-0

    橋接模式,引用“四人幫的話”就是 “decouple an abstraction from its implementation so that the two can vary independently”,抽象與行為分離。

    說個例子

    客戶想畫圖,畫兩種圓和矩形,每種矩形都要調用特別的劃線(draw_a_line())方法,每一種圓也是。如果像上面那樣,是不是感覺混亂了點?看看下面的呢。

    這個是不是舒服點?的確,圖形和畫法都存在一一對應的關系,我們完全可以把圖形這個抽象和畫法這個行為分離,而不需要一個畫法對應多個抽象,如上面那個。

    public abstract class Shape
    {
        
    public abstract void draw();
    }


    //畫點和圓的方法
    public abstract class ShapeDrawing
    {
        
    public abstract void draw_a_line();
        
    public abstract void draw_a_circle();
    }


    public class ShapeDrawingSingleton
    {
        
    private static ShapeDrawing shapedrawingSingleton;
        
        
    public ShapeDrawingSingleton(ShapeDrawing shapedrawing)
        
    {
            shapedrawingSingleton
    =shapedrawing;
        }

        
        
    public static ShapeDrawing getShapeDrawing()
        
    {
            
    return shapedrawingSingleton;
        }

    }


    //畫圖方法基類
    public class VShape extends Shape
    {
        
    public ShapeDrawing shapedrawing;
        
        
    public void setShapeDrawing()
        
    {
            
    this.shapedrawing=ShapeDrawingSingleton.getShapeDrawing();
        }

        
        
    public ShapeDrawing getShapeDrawing()
        
    {
            
    return this.shapedrawing;
        }

    }


    public class V1Circle extends VShape
    {
        
    public Circle(){setShapeDrawing();}
        
        
    public void draw()
        
    {
            
    //用shapedrawing畫圓
            
    //shapedrawing.draw_a_circle()
        }

    }


    //
    //V1Rectangle和V2系列參照上面的
    //

    public class DP1ShapeDrawing extends ShapeDrawing
    {
        
    public void draw_a_line(){};
        
    public void draw_a_circle(){};
    }


    public class DP2ShapeDrawing extends ShapeDrawing
    {
        
    public void draw_a_line(){};
        
    public void draw_a_circle(){};
    }


    ShapeDrawingSingleton shapedrawingSingleton
    =new ShapeDrawingSingleton(new DP1ShapeDrawing());

    V1Circle v1circle
    =new V1Circle();
    v1circle.draw();

    //其他的類似于上面的




    ---------------------------------------------------------
    專注移動開發

    Android, Windows Mobile, iPhone, J2ME, BlackBerry, Symbian
    posted on 2007-04-08 14:27 TiGERTiAN 閱讀(1178) 評論(2)  編輯  收藏 所屬分類: Design Patterns

    評論:
    # re: Bridge Pattern[未登錄] 2007-04-08 16:19 | yy
    圖片看不到啊  回復  更多評論
      
    # re: Bridge Pattern 2007-04-08 19:53 | TiGERTiAN
    對不起,可以了!嘿嘿  回復  更多評論
      

    只有注冊用戶登錄后才能發表評論。


    網站導航:
    博客園   IT新聞   Chat2DB   C++博客   博問  
     
    主站蜘蛛池模板: 亚洲精品V天堂中文字幕| 亚洲爱情岛论坛永久| 亚洲xxxx视频| 无码乱肉视频免费大全合集| 亚洲欧洲校园自拍都市| 国产成人免费在线| 久久精品国产亚洲av麻豆图片| 18禁止看的免费污网站| 亚洲欧洲日产国码二区首页| 永久免费在线观看视频| 亚洲a视频在线观看| 野花高清在线观看免费完整版中文| 亚洲一区二区三区91| 影音先锋在线免费观看| 日韩亚洲综合精品国产| 亚洲精品色婷婷在线影院| 黄色视频在线免费观看| 久久久亚洲欧洲日产国码是AV| 99久久99久久精品免费看蜜桃| 亚洲综合中文字幕无线码| 情侣视频精品免费的国产| 午夜成人无码福利免费视频| 国产精品亚洲αv天堂无码| 久久精品成人免费观看| 亚洲人成网站在线观看播放动漫| 四虎www成人影院免费观看| 色www免费视频| 亚洲2022国产成人精品无码区 | 边摸边脱吃奶边高潮视频免费| 亚洲福利中文字幕在线网址| 免费播放在线日本感人片| 亚洲福利秒拍一区二区| 国产真实伦在线视频免费观看| 岛国精品一区免费视频在线观看| 亚洲卡一卡2卡三卡4卡无卡三| 四虎影院免费在线播放| 三年片免费高清版| 亚洲愉拍一区二区三区| 国产亚洲精品福利在线无卡一| 最近免费中文字幕mv电影| 337P日本欧洲亚洲大胆精品|