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

7、Bridge(桥接模式)

作者: 我要扭开奥利奥 | 来源:发表于2019-05-20 21:20 被阅读0次

目的

将抽象部分和他的实现相分离,是他们都可以独立的变化。

使用场景

  • 不希望在抽象类和他的实现部分之间有一个固定的绑定关系。
  • 类的抽象和他的视线都想要能够通过生成子列的方式加以扩充的时候。
  • 对于一个抽象的实现部分的修改不会对于外部的客户产生影响。
  • 对与调用者隐藏抽象部分。

具体使用

假设我们是一个遥控器生产厂商,遥控器可以控制电视机。对于每一个遥控器控制器厂商来说,要是不能生产一个通用遥控器没那么就要为每一个电视重新配置一遍,那么就会很麻烦。
为了解决这个问题,我们就需要使用bridge这一个模式来减少开发的工作量。
首先我们建立一个接口,所有的电视生产公司都遵循这个接口来控制电视。

package bridge;

/**
 * 控制接口,所有的电视
 * 都需要实现这个接口里面的功能
 */
public interface Control {
    void On();
    void Off();
}

下面是每一个电视厂商自己为自己的的遥控方式做的定义,虽然接口一样,但是他们的每一的实现方法都不一样。

package bridge;

/**
 * LG电视机为自己的电视规定的遥控方式
 */
public class LGControl implements Control{
    @Override
    public void On(){
        System.out.println("LG on");
    }
    @Override
    public void Off(){
        System.out.println("LG off");
    }
}

package bridge;

/**
 * Sony为自己的电视规定的遥控方式
 */
public class SonyControl implements Control{
    @Override
    public void On(){
        System.out.println("Sony on");
    }
    @Override
    public void Off(){
        System.out.println("Sony off");
    }
}

下面就是开始为我们的遥控器厂商进行配置。
首先我们设置一个抽象类,在这个类里面我们定义控制方式。

package bridge;

/**
 * 遥控器厂商实现的抽象类
 */
public abstract class TVControlabs {
    Control tControl = null;
    public TVControlabs(Control control){
        this.tControl = control;
    }
    public abstract void OnOff();
}

这个类按照电视厂商的规定方式来控制电视,所实现的方式是使用了tControl这个对象来实现控制的。

package bridge;

public class TVControl extends TVControlabs {
    private boolean isOn = false;
    public TVControl(Control control){
        super(control);
    }

    @Override
    public void OnOff(){
        if(isOn){
            isOn = false;
            tControl.Off();
        }else{
            isOn = true;
            tControl.On();
        }
    }
}

最后是我们的测试类

package bridge;

public class Client {
    public static void main(String[] args){
        TVControl mLGContol;
        TVControl mSonyControl;
        mLGContol = new TVControl(new LGControl());
        mLGContol.OnOff();
        mLGContol.OnOff();


        mSonyControl = new TVControl(new SonyControl());
        mSonyControl.OnOff();
        mSonyControl.OnOff();
    }
}

相关文章

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

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

  • docker的三种网络模式

    桥接模式:bridge

  • 桥接模式

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

  • 7、Bridge(桥接模式)

    目的 将抽象部分和他的实现相分离,是他们都可以独立的变化。 使用场景 不希望在抽象类和他的实现部分之间有一个固定的...

  • 结构型-桥接(Bridge)

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

  • 设计模式-桥接模式

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

  • 10-桥接模式

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

  • 桥接模式

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

  • 桥接模式-原理类图

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

  • 桥接模式(Bridge)

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

网友评论

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

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