使用场景:桥接模式的核心意图就是将这些实现独立出来,让它们各自地变化。这就使得每种实现的变化不会影响其他实现,从而达到应对变化的目的。
多用聚合,少用继承

1. 手机软件抽象类、通讯录类、游戏类
package com.hj.designPattern.structural.bridge;public abstract class Software {public abstract void softrun();
}package com.hj.designPattern.structural.bridge;public class GameSoft extends Software{@Overridepublic void softrun() {System.out.println("游戏软件运行");}
}package com.hj.designPattern.structural.bridge;public class AddresSoft extends Software{@Overridepublic void softrun() {System.out.println("通讯录软件运行");}
}
2. 手机品牌类、华为类、小米类
package com.hj.designPattern.structural.bridge;public class PhoneBrand {protected Software software;PhoneBrand(Software software){this.software = software;}public void run() {software.softrun();}
}package com.hj.designPattern.structural.bridge;public class Huawei extends PhoneBrand{Huawei(Software software) {super(software);}@Overridepublic void run() {System.out.print("华为");super.run();}
}package com.hj.designPattern.structural.bridge;public class Xiaomi extends PhoneBrand{Xiaomi(Software software) {super(software);}public void run(){System.out.print("小米");super.run();}
}
3. 测试类
package com.hj.designPattern.structural.bridge;public class BridgeTest {public static void main(String[] args) {AddresSoft addresSoft = new AddresSoft();GameSoft gameSoft = new GameSoft();Huawei huaweiAddress = new Huawei(addresSoft);huaweiAddress.run();Huawei huaweiGame = new Huawei(gameSoft);huaweiGame.run();Xiaomi xiaomiAddress = new Xiaomi(addresSoft);xiaomiAddress.run();Xiaomi xiaomiGame = new Xiaomi(gameSoft);xiaomiGame.run();}
}


















