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

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

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

    人在江湖

      BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
      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遵循的是接口隔離原則的典型。比如,隨著時(shí)代的發(fā)展,槍在不停的變化改進(jìn)。與此同時(shí)槍的子彈也在改進(jìn),很多子彈賦予了新功能:比如信號(hào)彈,救援彈,甚至是炸彈。這樣,槍是抽象的同時(shí),子彈也是抽象的。二者組合起來(lái)變換無(wú)窮。仔細(xì)想一下《java與模式》中橋梁模式的例子--飛機(jī)和飛機(jī)制造商是不是也是這種靈活變換的組合?

    posted on 2011-02-08 17:19 人在江湖 閱讀(883) 評(píng)論(0)  編輯  收藏 所屬分類: design pattern
    主站蜘蛛池模板: 日本三级在线观看免费| 1000部拍拍拍18勿入免费视频软件 | 国产精品亚洲精品爽爽| 亚洲综合精品网站| 亚洲美女免费视频| 久久亚洲精品高潮综合色a片| 中文字幕亚洲综合久久菠萝蜜| 一级毛片免费观看不卡视频| 在线观看亚洲AV日韩A∨| 亚洲无线一二三四区手机| 在线成人爽a毛片免费软件| jzzijzzij在线观看亚洲熟妇| 亚洲啪啪综合AV一区| 51在线视频免费观看视频| 日韩在线视精品在亚洲| 亚洲国产成人久久综合一 | 美女一级毛片免费观看| 亚洲一区二区三区电影| 四虎免费影院4hu永久免费| 无码一区二区三区免费| 免费国产高清毛不卡片基地| 亚洲视频在线免费播放| 亚洲欧洲中文日韩av乱码| 999久久久免费精品国产| 国产精品免费αv视频| 亚洲视频一区二区三区四区| 在线日韩日本国产亚洲| 免费无码黄网站在线观看| 亚洲欧洲免费视频| 一个人免费观看日本www视频| 亚洲国产精品一区二区三区在线观看| 国产亚洲一区区二区在线| 成人毛片免费网站| 99精品在线免费观看| 人妻仑乱A级毛片免费看| 久久亚洲国产最新网站| 久久久亚洲裙底偷窥综合| 亚洲中文字幕久久精品无码APP| 日韩免费视频在线观看| 国产精品视频免费观看| 亚欧日韩毛片在线看免费网站|