当前位置:   article > 正文

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

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


前言

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


一、介绍

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

二、详细分析

1.核心组成

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

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

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

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

2.实现步骤

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

3.代码示例

实现角色类

/**
 * 实现角色类
 */
public interface CatColour {
    /**
     * 获取颜色
     */
    void getColour();
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

具体实现角色类

/**
 * 接口实现类
 */
public class RedCatColour implements CatColour{
    @Override
    public void getColour() {
        System.out.println("红色");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
public class SkyBlueCatColour implements CatColour{
    @Override
    public void getColour() {
        System.out.println("天蓝色");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

抽象角色类

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


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

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

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

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

抽象扩展实现类

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

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

    @Override
    void run() {
        catColour.getColour();
        System.out.println("小米su7");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
public class BmwCat extends Cat{

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

    @Override
    void run() {
        catColour.getColour();
        System.out.println("宝马车");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

测试类

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

    }
  • 1
  • 2
  • 3
  • 4
  • 5

结果
在这里插入图片描述

4.优缺点

优点

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

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

缺点

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

5.使用场景

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

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


总结

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

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号