设计模式-结构型模式-桥接模式

一.定义

将抽象与实现分离,使他们可以独立变化。其是通过组合关系代替继承,从而降低耦合度。

桥接模式就像一个桥梁,连接两个类,使两个类之间有了关联,但不是通过继承,而是通过组合。

桥接模式是合成复用原则的很好体现。

二.结构

抽象化角色:定义一个抽象类,并包含一个对实现化对象的引用。

扩展抽象化角色:是抽象化角色的实现类,实现了抽象化角色中的具体方法,并通过组合关系调用抽象化角色中的业务方法。

实现化角色:定义实现化角色的接口,供抽象化角色调用

具体实现化角色:给出实现化角色接口的具体实现。

三.案例

下面以汽车为例。汽车有不同的品牌,不同品牌的汽车又有不同的组成(动力源,轮胎,车架等等)。

即对不同品牌的车进行扩展(什么轮胎,什么车架,什么动力源等等)。是各个类的组合。通过继承可以实现,但组合的形式有很多,会导致很多的类。通过桥接模式(合成复用原则)则条理清晰,更加易于扩展。

代码:

/**
 * 抽象化角色
 */
public abstract class Car {
    //轮胎
    protected Tyre tyre;

    public Car(Tyre tyre) {
        this.tyre = tyre;
    }
    public abstract void use();
}


public class BYD extends Car{

    public BYD(Tyre tyre) {
        super(tyre);
    }

    @Override
    public void use() {
        tyre.use();
    }
}
/**
 * 实现化角色
 */
public interface Tyre {
     void use();
}

public class GTY implements Tyre{
    @Override
    public void use() {
        System.out.println("使用固特异轮胎");
    }
}

好处:

桥接模式能够很好的进行类之间的组合,扩展性也很好,也符合开闭原则。

例如上面的例子,若想新加一个品牌,只需实现其接口就行,不用修改源代码。

四.使用场景

1.当一个类存在两个独立变化的维度,且这两个维度都要进行扩展。

2.当类与类之间需要进行关联(组合),但又不想通过继承来实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值