JAVA 桥接模式

文章目录

介绍

桥接模式

实现

介绍

描述

桥接模式设计模式属于结构型模式,是用于把抽象化和实现化进行解耦,通过提供之间的桥接结构,使得二者独立变化。

特点

优点:抽象和实现分离、拓展能力强。

缺点:桥接模式对于增加系统的理解和设计难度。

实现原理

原本的继承方式拓展中可能会造成大量类的生成,且扩展不灵活,将抽象部分于实现部分分离,通过抽象类依赖实现类,做到分离,减少之间的耦合。

适用

  1. 适合不希望通过继承或者多层次继承导致类个数累加的系统,采用桥接模式。

  2. 一个类存在两个独立变化的维度,且都需要进行拓展(如:品牌和样式),采用桥接模式。

桥接模式

实现

假设存在产品手机,既需要拓展品牌同时又要针对样式做修改。设置类Brand接口作为桥接实现接口(品牌内容),类Vivo、Xiaomi作为实现类。抽象类Phone作为桥接,类FlowType、FlapType继承抽象类Phone作为手机样式类。

第一步:创建桥接实现接口,类Vivo、Xiaomi作为实现类。


public interface Brand {
    void getBrand();
}

public class Vivo implements Brand{
    @Override
    public void getBrand() {
        System.out.println("Brand => Vivo ");
    }
}

public class Xiaomi implements Brand{
    @Override
    public void getBrand() {
        System.out.println("Brand => Xiao Mi ");
    }
}

第二步:创建桥接抽象类,类FlowType、FlapType继承抽象类。

public abstract class Phone {

    private Brand brand;

    public Phone(Brand brand) {
        this.brand = brand;
    }

    public void getInfo(){
        brand.getBrand();
    }
}

public class FlapType extends Phone{
    public FlapType(Brand brand) {
        super(brand);
    }

    @Override
    public void getInfo() {
        System.out.println("====  FlapType  ====");
        super.getInfo();
    }
}

public class FlowType extends Phone{

    public FlowType(Brand brand) {
        super(brand);
    }

    @Override
    public void getInfo() {
        System.out.println("====  FlowType  ====");
        super.getInfo();
    }
}

第三步:测试。

public class Test {
   
    public static void main(String[] args) {
        Phone Vivo = new FlowType(new Vivo());
        Vivo.getInfo();
        Phone Xiaomi = new FlapType(new Xiaomi());
        Xiaomi.getInfo();
        /*
        结果:
          ====  FlowType  ====
              Brand => Vivo 
          ====  FlapType  ====
             Brand => Xiao Mi 
         */
    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值