设计模式---结构型模式---桥接模式

1. 桥接模式

1.1 定义

桥接是用于把抽象化与实现化解耦,使得二者可以独立变化。它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。

这种模式设计到一个作为桥接的接口,使得实体类的功能独立于接口实现类。这两种类型的类可被结构化改变而互不影响。

1.2 介绍

这种模式主要为了解决在有多种可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。主要的实现就是在抽象类和实现抽象类之间,加入接口,实现类将接口放到构造方法中实现,而具体的实现接口类可以通过实现抽象类中的构造方法new()出来,实现抽象化和实现化解耦。可以在实现系统可能有多个角度分类,每一种角度都可能变化时使用。

桥接模式主要分为以下四种角色:

  • 抽象(Abstraction)角色:定义抽象接口,拥有一个Implementor类型的对象的引用
  • 扩展抽象(Refined Abstraction)角色:扩展Abstraction
  • 抽象实现(Implementor)角色:定义实现类的接口
  • 具体实现(Concrete Implementor)角色:实现Implementor接口,子类对象替换父类对象,提供给Abstraction具体的业务操作方法。

2. 代码实现

2.1. 抽象角色

//定义电子产品的抽象类
public abstract class Electron {

    protected  CreateApi createApi;

    protected Electron(CreateApi createApi){
        this.createApi = createApi;
    }

    public abstract void create();
}

2.2. 抽象实现角色

//定义手机类,继承电子产品
public class Phone extends Electron {

    private String system;

    public Phone(CreateApi createApi,String system   ) {
        super(createApi);

        this.system = system;
    }

    public void create() {
        createApi.createPhone(system);
    }
}

2.3. 创建接口

//创建制造手机的接口
public interface CreateApi {

    public void createPhone(String system);
}

2.4. 实现接口

//创建华为手机实现接口
public class HuaWeiPhone implements CreateApi{
    @Override
    public void createPhone(String system) {
        System.out.println("HuaWeiPhone " + system);
    }
}
//创建苹果手机实现接口
public class ApplePhone implements CreateApi {

    @Override
    public void createPhone(String system) {
        System.out.println("ApplePhone " + system);
    }
}

2.5. 测试类

public class BridgePatternDemo {

    public static void main(String[] args) {
        Electron huaWeiPhone = new Phone(new HuaWeiPhone(),"AndroidSystem");
        Electron applePhone = new Phone(new ApplePhone(),"IOSSystem");

        huaWeiPhone.create();
        applePhone.create();
    }
}
/**
 * HuaWeiPhone AndroidSystem
 * ApplePhone IOSSystem
 */

3. 优缺点

3.1 优点

  1. 抽象和实现的分离。
  2. 优秀的扩展能力。
  3. 实现细节对客户透明。

3.1 缺点

​ 桥接模式的引入会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计与编程。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值