在这里插入图片描述

上一篇:适配器模式

1.什么是桥接模式?

  桥接模式也称为柄体模式或者接口模式,它是将抽象部分和它的实现部分进行分离解耦,并且使得他们二者可以独立的变化。下图是一种典型的继承方式转换为桥接模式的案例图:

在这里插入图片描述
  如果说上面的图片看不懂,那再举个栗子:
在这里插入图片描述
  人大体可以分为两部分:灵魂(抽象部分) 肉体(具体实现),孙悟空的灵魂是一个猴子,但是肉体却是人形。这和桥接模式的基本理念是一致的(抽象部分和实现部分分离解耦,并使得二者可以独立变化,不同的灵魂和不同的肉体进行组合可以实现不同的实体对象)。

2.桥接模式的优缺点?

1.优点:
1)抽象部分与具体实现分离
2)具有良好的可扩展性
2.缺点:
1)此模式会导致项目结构的复杂度增加

3.代码实现桥接模式?

  下面用代码实现一个桥接模式的案例:

我们以天使小狗和魔鬼蝙蝠两种生物为例:

1.创建灵魂接口

/**
 * 灵魂接口(灵魂可以是魔鬼、天使)
 */
public interface Soul {

    /**
     * 打印灵魂名称
     */
    void name();
}

2.创建魔鬼类型灵魂

/**
 * 魔鬼
 */
public class Devil  implements Soul {
    @Override
    public void name() {
        System.out.print("魔鬼");
    }
}

3.创建天使类型灵魂

/**
 * 天使
 */
public class Angel implements Soul {
    @Override
    public void name() {
        System.out.print("天使");
    }
}

4.创建生物类

/**
 * 抽象的生物类
 */
public abstract class Biological {

    /**
     *生物具有灵魂属性
     */
    protected  Soul soul;

    public Biological(Soul soul) {
        this.soul = soul;
    }

    public void info(){
        //打印灵魂的名称
        soul.name();
    }
}

5.创建具体的生物类—小狗

/**
 * 小狗类
 */
public class Dog extends Biological{
    public Dog(Soul soul) {
        super(soul);
    }

    //重写打印灵魂的方法(ctrl + O)

    @Override
    public void info() {
        super.info();
        System.out.println("小狗");
    }
}

6.创建具体的生物—蝙蝠类

/**
 * 蝙蝠类
 */
public class Bat extends Biological {
    public Bat(Soul soul) {
        super(soul);
    }

    @Override
    public void info() {
        super.info();
        System.out.println("蝙蝠");
    }
}

7.测试类

注意:我们在给具体的生物赋予灵魂的时候直接new一个具体的灵魂给生物就ok了

public class Test {

    public static void main(String[] args) {
      Biological biological =new Dog(new Angel());
      biological.info();

      Biological biological2 = new Bat(new Devil());
      biological2.info();

    }
}

在测试类中,我们给小狗这种生物new了一个天使灵魂,给蝙蝠这种生物new了一个魔鬼灵魂

8.测试结果
在这里插入图片描述

  当我们将生物分解为灵魂肉体两部分的时候,无论是我们需要增加这两部分中的任何一种,都不会影响到另外一部分。比如我们需要增加具体实现小猫、小兔子,灵魂部分我们不需要做任何修改。而且我们可以通过不同的灵魂和不同的肉体进行任意组合,实现生物的“多样性”……比如我们熟知的天蓬元帅就是灵魂和肉体组合太随意造就的……

下一篇:装饰模式

posted on 2020-02-06 16:19  无关痛痒qaq  阅读(63)  评论(0编辑  收藏  举报