桥接模式:是将抽象部分与它的实现部分分离,使它们都可以独立地变化。
这么说可能就比较抽象了,但是如果通过这张图片来理解的话就会比较简单了。
1. 手机品牌抽象类
桥梁的一头。
1 public abstract class HandsetBrand {
2
3 protected HandsetSoft soft;
4
5 //设置手机软件
6 public void setHandsetSoft(HandsetSoft soft) {
7 this.soft = soft;
8 }
9
10 //运行
11 public abstract void run();
12
13 }
2. 手机软件抽象类
桥梁的另一头。两者通过一条聚合线连接,表示一个手机品牌可以有多个软件。
1 public abstract class HandsetSoft {
2
3 public abstract void run();
4
5 }
3. 各类手机品牌
这里写一个,多余的不再赘述。
1 public class HandsetBrandA extends HandsetBrand {
2
3 @Override
4 public void run() {
5 soft.run();
6 }
7
8 }
4. 各类手机软件
有游戏、通讯录等等,这里写一个,多余不再赘述。
1 public class HandsetGame extends HandsetSoft {
2
3 @Override
4 public void run() {
5 System.out.println("运行手机游戏");
6 }
7
8 }
5. Client客户端
1 public class Client {
2
3 public static void main(String[] args) {
4 HandsetBrand ab;
5
6 //使用A品牌手机
7 ab = new HandsetBrandA();
8 System.out.println("A品牌手机:");
9
10 ab.setHandsetSoft(new HandsetGame());
11 ab.run();
12
13 ab.setHandsetSoft(new HandsetAddressList());
14 ab.run();
15
16 //分隔符
17 System.out.println("---------------");
18
19 //使用B品牌手机
20 ab = new HandsetBrandB();
21 System.out.println("B品牌手机:");
22
23 ab.setHandsetSoft(new HandsetGame());
24 ab.run();
25
26 ab.setHandsetSoft(new HandsetAddressList());
27 ab.run();
28 }
30 }