美文网首页图解设计模式
图解设计模式--Bridge(桥接模式)

图解设计模式--Bridge(桥接模式)

作者: Ginger12 | 来源:发表于2017-08-18 09:24 被阅读62次

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

    Bridge 模式

    Bridge 模式的作用是将类的功能层次结构类的实现层次结连接起来。

    类的层次结构的两个作用:

    1. 希望增加新的功能时

      父类具有基本功能,在子类中增加新的功能。(类的功能层次结构)

    2. 希望增加新的实现时

      父类通过声明抽象方法来定义接口,子类通过实现具体方法来实现接口。(类的实现层次结)

    示例程序

    DisplayImpl.java(Implementor)

    package bridge;
    
    public abstract class DisplayImpl {
        public abstract void rawOpen();
        public abstract void rawPrint();
        public abstract void rawClose();
    }
    

    Display.java(Abstraction)

    package bridge;
    
    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(RefinedAbstraction)

    package bridge;
    
    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();
        }
    }
    

    StringDisplayImpl.java(ConcreteImplementor)

    package bridge;
    
    public class StringDisplayImpl extends DisplayImpl {
        private String string;
        private int width;
    
        public StringDisplayImpl(String string) {
            this.string = string;
            this.width = string.getBytes().length;
        }
    
        public void rawOpen() {
            printLine();
        }
        public void rawPrint() {
            System.out.println("|" + string + "|");
        }
        public void rawClose() {
            printLine();
        }
    
        private void printLine() {
            System.out.print("+");
            for (int i = 0; i < width; i++) {
                System.out.print("-");
            }
            System.out.println("+");
        }
    }
    

    Bridge 中登场的角色

    1. Abstraction(抽象化)

      该角色位于“类的功能层次结构”的最上层。它使用Implementor角色的方法定义了基本的功能。

    2. RefinedAbstraction(改善后的抽象化)

      在Abstraction角色的基础上增加了新的功能的角色。

    3. Implementor(实现者)

      该角色位于“类的实现层次结构”的最上层。它定义了用于实现Abstraction角色的接口的方法。

    4. ConcreteImplementor(具体实现者)

      该角色负责实现在Implementor角色中定义的接口。

    拓展思路

    分开后更容易扩展,增加后的功能可以被“所有的实现”使用。

    相关文章

      网友评论

        本文标题:图解设计模式--Bridge(桥接模式)

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