文章插图
文章插图
桥接设计模式:结构型设计模式将抽象部分与它实现部分离,使它们都可以独立地变化通俗来说,是通过组合来桥接其它的?为/维度应用场景:系统需要在构件的抽象化?色和具体化?色之间增加更多的灵活性不想使用继承导致系统类的个数急剧增加的系统有时候一个类,可能会拥有多个变化维度,?如啤酒,有不同的容量和品牌,可以使用继承组合的?式进行开发,假如维度很多,就容易易出现类的膨胀,使用桥接模式就可以解决这个问题,且解耦业务背景:手机可以从两个维度进行变化,一个是品牌,一个是内存.此时我们就可以通过桥接模式将这两个维度分离开来,每一个维度都可以独立扩展.比如说手机品牌,苹果、三星、锤子等等.内存方面又可以生产10G、16G等等.从专业的角度来看可以这样定义桥接模式.桥接模式图:
核心组成:client:指的是我们买手机的人Abstraction(抽象类):指的是手机抽象类Refined Abstraction(具体类):指的是具体手机品牌Implementor:在这里相当于手机的其他组件,内存ConcreteImplementor:具体的内存型号.实现步骤:定义Implementor,这里定义手机内存接口
public interface Memory {public void addMemory();}
定义ConcreteImplementor,这里指具体的内存public class Memory6G implements Memory {@Overridepublic void addMemory() {System.out.println("6G内存");}}public class Memory8G implements Memory {@Overridepublic void addMemory() {System.out.println("8G内存");}}
定义Abstraction手机抽象类public abstract class Phone {public Memory memory;public void setMemory(Memory memory) {this.memory = memory;}public abstract void buyPhone();}
定义Refined Abstraction(具体的手机品牌)【光猫桥接模式怎么设置192.168.1.1 光猫桥接模式怎么设置方法】
public class HuaWei extends Phone {@Overridepublic void buyPhone() {System.out.println("购买de华为手机-");memory.addMemory();}}public class XiaoMi extends Phone {@Overridepublic void buyPhone() {System.out.println("购买de小米手机-");memory.addMemory();}}
上下文应用public class BridgeContext {public static void main(String[] args) {Phone huaWei = new HuaWei();huaWei.setMemory(new Memory6G());huaWei.buyPhone();huaWei.setMemory(new Memory8G());huaWei.buyPhone();Phone xiaomi = new XiaoMi();xiaomi.setMemory(new Memory6G());xiaomi.buyPhone();xiaomi.setMemory(new Memory8G());xiaomi.buyPhone();}}
桥接模式的优点:抽象和实现的分离.优秀的扩展能?,符合开闭原则桥接模式的缺点:增加系统的理解与设计难度使用聚合关联关系建立在抽象层,要求开发者针对抽象 进?设计与编程,比如抽象类汽车,?面聚合了颜?类,有点像对象适配器- 安卓微博黑暗模式 三星显示微博
- 海尔空调遥控怎么设置成摆风模式
- 腾讯和京东的合作模式是什么 京东与腾讯有合作关系吗
- iphonex恢复模式怎么进dfu模式 iphonex恢复模式怎么进手机白苹果了
- iphone8dfu模式怎么进入 苹果8pdfu模式怎么进
- Java有哪些设计模式 java什么是设计模式
- 富士相机自定义模式设置 富士驱动器设置
- 安卓微信暗黑模式什么时候出,微信安卓深色模式怎么设置
- 电脑显示屏测试模式 系统显示测试模式
- surface 模式切换 surface界面怎么切换