美文网首页
Bridge模式(设计模式)

Bridge模式(设计模式)

作者: DarknessShadow | 来源:发表于2020-05-15 11:09 被阅读0次

作用:将类的功能层次结构与实现层次结构分离

类的功能结构层次:父类具有基本功能,在子类中添加需要的新功能

类的实现层次:父类通过声明抽象方法来定义接口(API),子类通过实现具体方法来实现接口(API)。子类并没有在父类的基础上新增功能,只是父类接口的具体实现。

重点:继承是强关联,委托是弱关联

继承很容易扩展类,但是类之间会形成了一种强关联关系(自我理解就是直接依赖关系)

委托就可以很轻松改变这种直接依赖关系,只有当传入的参数确定的时候才能确定两者之间的关系。并且这种机制可以把类中的具体实现委托给其他类去实现,就相当于把任务承包出去一样。

Bridge模式.png
小案例

Display.java

/**
 * @Author:DarknessShadow
 * @description:
 * @date 2020/5/15 10:11
 */
public class Display {
    private DisplayImpl impl;

    public Display(DisplayImpl impl) {
        this.impl = impl;
    }

    public void open() {
        impl.rawOpen();
    }

    public void print() {
        impl.rawPrint();
    }

    public void close() {
        impl.rawClose();
    }

    public final void display() {
        open();
        print();
        close();
    }
}

CountDisplay.java

/**
 * @Author:DarknessShadow
 * @description:
 * @date 2020/5/15 10:14
 */
public class CountDisplay extends Display {
    public CountDisplay(DisplayImpl impl) {
        super(impl);
    }

    public void multiDisplay(int times) {
        open();
        for (int i = 0; i < times; i++) {
            print();
        }
        close();
    }
}

DisplayImpl.java

/**
 * @Author:DarknessShadow
 * @description:
 * @date 2020/5/15 10:15
 */
public abstract class DisplayImpl {
    public abstract void rawOpen();
    public abstract void rawPrint();
    public abstract void rawClose();
}

StringDisplayImpl.java

/**
 * @Author:DarknessShadow
 * @description:
 * @date 2020/5/15 10:17
 */
public class StringDisplayImpl extends DisplayImpl {
    private String string;
    private int width;

    public StringDisplayImpl(String string) {
        this.string = string;
        this.width = string.getBytes().length;
    }

    @Override
    public void rawOpen() {
        printLine();
    }

    @Override
    public void rawPrint() {
        System.out.println("|" + string + "|");
    }

    @Override
    public void rawClose() {
        printLine();
    }

    private void printLine(){
        System.out.print("+");
        for (int i = 0; i < width; i++) {
            System.out.print("-");
        }
        System.out.println("+");
    }
}

相关文章

  • 桥接模式

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

  • 设计模式之桥接(Bridge)

    概述 桥接模式(Bridge)是一种结构型设计模式。Bridge模式基于类的最小设计原则,通过使用封装、聚合及继承...

  • 设计模式-桥接模式

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

  • Bridge模式(设计模式)

    作用:将类的功能层次结构与实现层次结构分离 类的功能结构层次:父类具有基本功能,在子类中添加需要的新功能 类的实现...

  • 设计模式-bridge

    桥接模式是一种不太常用的设计模式,该模式理解为一个类在两个不同的维度变化。 例子 经典例子就是jdbc,我们使用j...

  • Android 桥接模式

    Android 23种设计模式 一、前言 Android桥接(Bridge)模式,又被称为桥梁模式。结构型模式之一...

  • 设计模式-桥(Bridge)模式

    主要角色 类的功能 功能实现 职责 如果某一个或一种类的实现很复杂,桥模式是讲类的复杂实现的具体功能单独分离开,让...

  • Java设计模式之桥接模式

    概念 桥接模式:亦称Bridge模式,构造型设计模式之一。  将抽象部分(abstraction)和它的实现部分(...

  • 桥接模式

    介绍 桥接模式(Bridge Pattern) 也称为桥梁模式,是结构型设计模式之一。桥接模式的作用就是连接 "两...

  • 设计模式用例(三)

    Strategy 模式 Bridge 模式 Iterator 模式

网友评论

      本文标题:Bridge模式(设计模式)

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