avatar

目录
桥接模式

个人博客

http://www.milovetingting.cn

桥接模式

模式介绍

桥接模式也称为桥梁模式,是结构型设计模式之一。

模式定义

将抽象部分与实现部分分离,使它们都可以独立地进行变化。

使用场景

  1. 一个系统需要在构件的抽象化角色和具体角色之间增加更多灵活性,避免在两个层次之间建立静态的继承关系,可以通过桥接模式使它们在抽象层建立一个关联关系。

  2. 不希望使用继承或因为多层次继承导致系统类的个数急剧增加的系统。

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

简单使用

定义抽象类

java
1
2
3
public abstract class CoffeeAdditives {
public abstract String addSomething();
}

定义实现类

java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Sugar extends CoffeeAdditives {

@Override
public String addSomething() {
return "加糖";
}

}

public class Ordinary extends CoffeeAdditives{

@Override
public String addSomething() {
return "原味";
}

}

定义抽象类

java
1
2
3
4
5
6
7
8
9
10
11
12
public abstract class Coffee {

protected CoffeeAdditives coffeeAdditives;

public Coffee(CoffeeAdditives coffeeAdditives) {
super();
this.coffeeAdditives = coffeeAdditives;
}

public abstract void makeCoffee();

}

定义实现类

java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class LargeCoffee extends Coffee {

public LargeCoffee(CoffeeAdditives coffeeAdditives) {
super(coffeeAdditives);
}

@Override
public void makeCoffee() {
System.out.println("大杯的" + coffeeAdditives.addSomething() + "咖啡");
}

}

public class SmallCoffee extends Coffee {

public SmallCoffee(CoffeeAdditives coffeeAdditives) {
super(coffeeAdditives);
}

@Override
public void makeCoffee() {
System.out.println("小杯的" + coffeeAdditives.addSomething() + "咖啡");
}

}

调用

java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Main {

public static void main(String[] args) {
Ordinary ordinary = new Ordinary();

Sugar sugar = new Sugar();

LargeCoffee largeCoffee = new LargeCoffee(ordinary);
largeCoffee.makeCoffee();

SmallCoffee smallCoffee = new SmallCoffee(ordinary);
smallCoffee.makeCoffee();

LargeCoffee largeCoffee2 = new LargeCoffee(sugar);
largeCoffee2.makeCoffee();

SmallCoffee smallCoffee2 = new SmallCoffee(sugar);
smallCoffee2.makeCoffee();

}

}

输出结果

Code
1
2
3
4
大杯的原味咖啡
小杯的原味咖啡
大杯的加糖咖啡
小杯的加糖咖啡
文章作者: milovetingting
文章链接: http://www.milovetingting.cn/2020/02/18/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/%E6%A1%A5%E6%8E%A5%E6%A8%A1%E5%BC%8F/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 milovetingting

评论