桥接模式:是将抽象部分与它的实现部分分离,使它们都可以独立地变化。
这么说可能就比较抽象了,但是如果通过这张图片来理解的话就会比较简单了。
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 }