美文网首页
桥接模式(Bridge)

桥接模式(Bridge)

作者: 森码 | 来源:发表于2018-08-02 20:59 被阅读13次
  1. 定义
    它把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。事物对象仅是一个抽象的概念。如“圆形”、“三角形”归于抽象的“形状”之下,而“画圆”、“画三角”归于实现行为的“画图”类之下,然后由“形状”调用“画图”。

  2. 类图


    Bridge.jpg
  3. 例子


/**
 * "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();
        }
    }
}

补充

  • 感觉平时用过,但又不是特别清晰,我认为的是桥接更偏向于抽象,通过接口来改变结构,通过A调用B,B来调用C,而且有一个聚合的关系。

将抽象和实现放在两个不同的类层次中,使它们可以独立地变化。——《Head First 设计模式》

将类的功能层次结构和实现层次结构相分离,使二者能够独立地变化,并在两者之间搭建桥梁,实现桥接。—— 《图解设计模式》

桥接模式、代理模式、中介者模式、适配器模式的区别
  • 桥接强调『实现与抽象』分离
  • 代理强调『转接』(相同事物的转接)
  • 中介者强调『调和』(两个对象之间交流)
  • 适配器强调『适配』(自己处理好,不是转接也不是调和)

相关文章

  • 设计模式解析—桥接设计模式

    桥接模式(Bridge Pattern)定义和使用场景 定义桥接模式(Bridge Pattern):将抽象部分...

  • docker的三种网络模式

    桥接模式:bridge

  • 桥接模式

    设计模式:桥接模式(Bridge)

  • 结构型-桥接(Bridge)

    桥接(Bridge) [TOC] 定义 桥梁模式(Bridge Pattern)也叫做桥接模式,是一个比较简单的模...

  • 设计模式-桥接模式

    设计模式-桥接模式 定义 桥接模式(Bridge Pattern)也称为桥梁模式、接口(Interface)模式或...

  • 10-桥接模式

    桥接模式-Bridge Pattern【学习难度:★★★☆☆,使用频率:★★★☆☆】 处理多维度变化——桥接模式(...

  • 桥接模式

    桥接(Bridge)模式的定义如下:将抽象与实现分离,使它们可以独立变化。 桥接(Bridge)模式的优点是:由于...

  • 桥接模式-原理类图

    桥接模式(Bridge)-基本介绍 桥接模式(Bridge模式)是指:将实现与抽象放在两个不同的类层次中,使两个层...

  • 桥接模式(Bridge)

    定义它把事物对象和其具体行为、具体特征分离开来,使它们可以各自独立的变化。事物对象仅是一个抽象的概念。如“圆形”、...

  • 桥接模式-bridge

    将抽象部分与它的实现部分分离,使他们都可以独立地变化 效果及实现要点: 适用性: 在以下的情况下应当使用桥梁模式:...

网友评论

      本文标题:桥接模式(Bridge)

      本文链接:https://www.haomeiwen.com/subject/eansvftx.html