深度学习设计模式之桥接模式


前言

桥接模式是将抽象部分与实现部分分离,使它们都可以独立的变化。


一、介绍

桥接模式是结构型设计模式,主要是将抽象部分与实现部分分离,使它们都可以独立的变化。桥接模式主要目的是通过组合的方式建立两个类之间的联系,而不是继承。通俗来讲是通过组合来桥接其它的行为/维度。

二、详细分析

1.核心组成

  • 抽象化角色 :主要负责定义出该角色的行为 ,并包含一个对实现化对象的引用。

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

    • 实现化角色 :定义实现化角色的接口,包含角色必须的行为和属性,并供扩展抽象化角色调用。

    • 具体实现化角色 :给出实现化角色接口的具体实现。
      在这里插入图片描述

2.实现步骤

  1. 先创建实现角色接口;
  2. 创建实现角色的具体实现类;
  3. 创建抽象角色,持有实现角色接口类;
  4. 创建抽象角色扩展类,继承抽象角色。

3.代码示例

实现角色类

/**
 * 实现角色类
 */
public interface CatColour {
    /**
     * 获取颜色
     */
    void getColour();
}

具体实现角色类

/**
 * 接口实现类
 */
public class RedCatColour implements CatColour{
    @Override
    public void getColour() {
        System.out.println("红色");
    }
}
public class SkyBlueCatColour implements CatColour{
    @Override
    public void getColour() {
        System.out.println("天蓝色");
    }
}

抽象角色类

/**
 * 抽象类接口
 */
public abstract class Cat {


    // 将接口作为一个属性来修饰 抽象类
    protected CatColour catColour;

    // set方法设置属性Ca
    public void setCatColour(CatColour catColour) {
        this.catColour = catColour;
    }

    /**
     * 行驶汽车
     */
    abstract void run();

}

抽象扩展实现类

/**
 * 抽象实现类
 */
public class XiaomiSu7Cat extends Cat{

    public XiaomiSu7Cat(CatColour colour) {
        super.setCatColour(colour);
    }

    @Override
    void run() {
        catColour.getColour();
        System.out.println("小米su7");
    }
}
public class BmwCat extends Cat{

    public BmwCat(CatColour catColour) {
       super.setCatColour(catColour);
    }

    @Override
    void run() {
        catColour.getColour();
        System.out.println("宝马车");
    }
}

测试类

    public static void main(String[] args) {
        XiaomiSu7Cat xiaomiSu7Cat = new XiaomiSu7Cat(new SkyBlueCatColour());
        xiaomiSu7Cat.run();

    }

结果
在这里插入图片描述

4.优缺点

优点

  • 抽象和实现的分离。桥接模式使用"对象间的关联关系"解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化。

  • 优秀的扩展能力。桥接模式提高了系统的扩展性,在两个变化维度中任意扩展一个维度都不需要修改原有系统,符合开闭原则。

缺点

  • 增加系统的理解与设计难度。由于关联关系建立在抽象层,要求开发者一开始就要对抽象层进行设计和编程。

5.使用场景

  • 系统需要在构件的抽象化角色和具体化角色之间增加更多的灵活性;

  • 不想使用继承导致类的个数急剧增加。


总结

以上就是今天的内容了,本文简单介绍了桥接设计模式的使用和优缺点,提供代码示例以供参考。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值