结构型模式--桥接模式

1 前言

桥接模式是结构性模式中非常重要的一个模式,使用也比较广泛。因此有必要重点掌握

2 桥接模式简介

一般来说,对于抽象,我们是定义接口或者抽象类,而对于实现往往会继承抽象或者接口。但是此种方式不够灵活,继承是侵入式的,使得难以对抽象部分和实现部分进行单独的修改和演进。
另外,继承使得实现部分中有抽象部分,使得实现部分的冗余性比较重。

桥接模式就是为解决此问题而生的,桥接模式主要是将抽象部分与实现部分进行分离,使其可以分别的进行演进和变化。

定义: 将系统的抽象部分与实现部分分离,使它可以独立地变化

UML:
这里写图片描述

Abstraction是系统的抽象部分,一般是系统对外提供的接口的类,它引用了Implementor接口实现的类,因此往往会把抽象接口中的请求转到这个实现类的接口中,例如会在oper()中调用Implementor的operImpl()。

RefinedAbstraction是抽象系统的子类,用于不同的客户需求,同理,ConcreteImplementorA是Implementor接口实现的一个子类。

适用场景:
1 抽象和实现之间不想有固定的绑定关系,例如想运行时加载(运行时注入)
2 类的抽象和它的实现都可以通过生成子类的方法加以扩充
3 对一个系统抽象部分的修改不对客户产生影响(因为不修改实现部分)
4 多个对象间想共享某个实现

示例:
暂时没找到合适的例子,下次补上吧

注意事项:
1 分离接口与实现部分,一个实现未必不变的绑定在一个接口上
2 仅有一个Implementor时没有必要定义成抽象形式
3 创建正确切合理的Implementor的对象及继承体系,这一点可以参考其他设计模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值