美文网首页
设计模式之桥梁模式

设计模式之桥梁模式

作者: 老羊_肖恩 | 来源:发表于2017-06-14 14:05 被阅读35次

桥梁模式的定义

桥梁模式(Bridge Pattern)也叫做桥接模式,是一个比较简单的模式,其定义如下: Decouple an abstraction from its implementation so that the two can very independently. 即:将抽象和实现解耦,使得两者可以独立的变化。
  桥梁模式的重点在于解耦,通用类图如下:


Bridge.png

我们先看看桥梁模式的四个角色:

  • Abstraction 抽象角色。抽象角色主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类。
  • Implementor 实现化角色。抽象类或接口,定义角色必须的行为和属性。
  • RefinedAbstraction 修正抽象化角色。引用实现化角色对抽象化角色进行修正。
  • ConcreteImplementor 具体实现化角色。
    桥梁模式的通用代码如下:
//实现化角色
public interface Implementor{
    //基本方法
    public void doSomething();
    public void doAnything();
}

//具体实现化角色
public class ConcreteImplementor1 implements Implementor{

    @Override
    public void doSomething() {
        System.out.println("ConcreteImplementor 1 doSomething...");
    }

    @Override
    public void doAnything() {
        System.out.println("ConcreteImplementor 1 doAnything...");
    }
    
}

//具体实现化角色
public class ConcreteImplementor2 implements Implementor{
    
    @Override
    public void doSomething() {
        System.out.println("ConcreteImplementor 2 doSomething...");
    }
    
    @Override
    public void doAnything() {
        System.out.println("ConcreteImplementor 2 doAnything...");
    }
    
}

//抽象化角色
public abstract class Abstraction{
    //定义对实现化角色的引用
    private Implementor impl;
    //约束子类必须实现构造函数
    public Abstraction(Implementor impl){
        this.impl = impl;
    }
    
    //自身的行为和属性。
    public void request(){
        this.impl.doSomething();
    }
    
    //获得实现化角色
    public Implementor getImplementor(){
        return this.impl;
    }
}

//具体抽象化角色
public class RefinedAbstraction extends Abstraction{

    public RefinedAbstraction(Implementor impl) {
        super(impl);
    }
    
    //修正父类行为
    @Override
    public void request(){
        super.request();
        super.getImplementor().doAnything();
    }
    
}

//客户端
public class BridgeClient{ 
    public static void main(String[] args) {
        //定义一个实现化角色
        Implementor impl1 = new ConcreteImplementor1();
        //定义一个抽象化角色
        Abstraction abs1 = new RefinedAbstraction(impl1);
        //执行
        abs1.request();
        System.out.println("------------------------");
        //定义一个实现化角色
        Implementor impl2 = new ConcreteImplementor2();
        //定义一个抽象化角色
        Abstraction abs2 = new RefinedAbstraction(impl2);
        //执行
        abs2.request();
    }
}

通用代码运行结果如下:

ConcreteImplementor 1 doSomething...
ConcreteImplementor 1 doAnything...
------------------------
ConcreteImplementor 2 doSomething...
ConcreteImplementor 2 doAnything...

桥梁模式的应用

桥梁模式的优点

  • 抽象和实现分离。为了解决继承的缺点而提出的设计模式,在该模式下,实现可以不受抽象的约束,不用再绑定在一个固定的抽象层次上。
  • 优秀的扩充能力。
  • 实现细节对客户透明。

桥梁模式使用场景

  • 不希望或不适用继承的场景。
  • 抽象类或接口不稳定的场景。
  • 重用性比较高的场景。

《注》以上内容总结自秦小波-《设计模式之禅》,仅为个人学习笔记

相关文章

  • 设计模式之桥梁模式

    桥梁模式的定义 桥梁模式(Bridge Pattern)也叫做桥接模式,是一个比较简单的模式,其定义如下: Dec...

  • Java设计模式之桥梁模式

    梦想中的我自己,身价过亿,有两个大公司,一个是房地产公司,一个是服装制造公司,其实是什么公司我倒是不关心,我关心的...

  • 设计模式之禅- 桥梁模式

    1.业务背景 我身价过亿,有两个大公司,一个是房地产公司,一个是服装制造业,这两个公司都很赚钱,天天帮我在累加财富...

  • 3.桥梁模式 桥梁模式:桥梁模式是一个非常重要的模式,也是一个比较复杂的模式。熟悉这个模式对于理解面向对象的设计原...

  • 设计模式-桥梁模式

    桥梁模式是为了解决将抽象部分与实现部分分离,好让他们都在自己的维度上有多维度地变化。 为了充分理解上面的含义,举个...

  • 设计模式-桥接模式

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

  • iOS设计模式之美-适配器模式

    iOS设计模式之美-工厂模式iOS设计模式之美-抽象工厂模式iOS设计模式之美-生成器模式iOS设计模式之美-适配...

  • iOS设计模式之美-抽象工厂模式

    iOS设计模式之美-工厂模式iOS设计模式之美-抽象工厂模式iOS设计模式之美-生成器模式iOS设计模式之美-适配...

  • iOS设计模式之美-工厂模式

    iOS设计模式之美-工厂模式iOS设计模式之美-抽象工厂模式iOS设计模式之美-生成器模式iOS设计模式之美-适配...

  • iOS设计模式之美-生成器模式

    iOS设计模式之美-工厂模式iOS设计模式之美-抽象工厂模式iOS设计模式之美-生成器模式iOS设计模式之美-适配...

网友评论

      本文标题:设计模式之桥梁模式

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