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

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

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

    人在江湖

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      82 Posts :: 10 Stories :: 169 Comments :: 0 Trackbacks

    /** "Implementor" */

    interface DrawingAPI {

        public void drawCircle(double x, double y, double radius);

    }

    /** "ConcreteImplementor" 1/2 */

    class DrawingAPI1 implements DrawingAPI {

       public void drawCircle(double x, double y, double radius) {

            System.out.printf("API1.circle at %f:%f radius %f\n", x, y, radius);

       }

    }

    /** "ConcreteImplementor" 2/2 */

    class DrawingAPI2 implements DrawingAPI {

       public void drawCircle(double x, double y, double radius) { 

            System.out.printf("API2.circle at %f:%f radius %f\n", x, y, radius);

       }

    }

    /** "Abstraction" */

    interface Shape {

       public void draw();                                            // low-level

       public void resizeByPercentage(double pct);     // high-level

    }

    /** "Refined Abstraction" */

    class CircleShape implements Shape {

       private double x, y, radius;

       private DrawingAPI drawingAPI;

       public CircleShape(double x, double y, double radius, DrawingAPI drawingAPI) {

           this.x = x;  this.y = y;  this.radius = radius; 

           this.drawingAPI = drawingAPI;

       }

       // low-level i.e. Implementation specific

       public void draw() {

            drawingAPI.drawCircle(x, y, radius);

       }   

       // high-level i.e. Abstraction specific

       public void resizeByPercentage(double pct) {

            radius *= pct;

       }

    }

    /** "Client" */

    class BridgePattern {

       public static void main(String[] args) {

           Shape[] shapes = new Shape[2];

           shapes[0] = new CircleShape(1, 2, 3, new DrawingAPI1());

           shapes[1] = new CircleShape(5, 7, 11, new DrawingAPI2());

           for (Shape shape : shapes) {

               shape.resizeByPercentage(2.5);

               shape.draw();

           }

       }

    }

     

    Bridge遵循的是接口隔離原則的典型。比如,隨著時代的發展,槍在不停的變化改進。與此同時槍的子彈也在改進,很多子彈賦予了新功能:比如信號彈,救援彈,甚至是炸彈。這樣,槍是抽象的同時,子彈也是抽象的。二者組合起來變換無窮。仔細想一下《java與模式》中橋梁模式的例子--飛機和飛機制造商是不是也是這種靈活變換的組合?

    posted on 2011-02-08 17:19 人在江湖 閱讀(876) 評論(0)  編輯  收藏 所屬分類: design pattern
    主站蜘蛛池模板: 在线看片无码永久免费视频| 97亚洲熟妇自偷自拍另类图片| 亚洲国产无线乱码在线观看| 在线a免费观看最新网站| 亚洲av之男人的天堂网站| ssswww日本免费网站片| 亚洲AV无码乱码在线观看| 亚洲AV永久无码精品放毛片| 成人无遮挡裸免费视频在线观看| 亚洲黄色网址大全| 免费无码成人AV在线播放不卡| 亚洲永久精品ww47| 精品熟女少妇aⅴ免费久久| 亚洲国产成人精品久久久国产成人一区二区三区综 | 妻子5免费完整高清电视| 亚洲美女aⅴ久久久91| 四虎影视在线影院在线观看免费视频 | 在线观看亚洲视频| 日韩中文无码有码免费视频| 中文日韩亚洲欧美制服| 无码高潮少妇毛多水多水免费| 亚洲欧洲中文日产| 67194熟妇在线永久免费观看| 亚洲网址在线观看| 永久在线免费观看| 亚洲剧情在线观看| 国产桃色在线成免费视频| 亚洲日本人成中文字幕| 国产一卡二卡3卡四卡免费| 亚洲成年网站在线观看| 成人午夜18免费看| 亚洲av中文无码乱人伦在线观看| 在线观看免费国产视频| 国产亚洲男人的天堂在线观看| 日产国产精品亚洲系列| 一区二区三区免费视频观看| 相泽亚洲一区中文字幕| 国内精品久久久久影院免费| 亚洲va在线va天堂va不卡下载| 最近中文字幕mv免费高清在线| 亚洲免费福利视频|