概述

桥接模式一种结构型模式,它主要应对的是:由于实际的需要,某个类具有两个或以上的维度变化,如果只是用继承将无法实现这种需要,或者使得设计变得相当臃肿。
桥接模式的做法是把变化的部分抽象出来,使变化部分与主类分离开来,从而将多个维度的变化彻底分离。最后,提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需要。
UML结构图
代码示例
package interview;
interface Implementor{
void operationImpl();
}
abstract class Abstraction{
protected Implementor implementor;
public Abstraction(Implementor implementor){
this.implementor = implementor;
}
public void operation(){
implementor.operationImpl();
}
}
class ConcreteImplementorA implements Implementor {
@Override
public void operationImpl() {
System.out.println("具体实现A");
}
}
class ConcreteImplementorB implements Implementor {
@Override
public void operationImpl() {
System.out.println("具体实现B");
}
}
class RefinedAbstraction extends Abstraction{
public RefinedAbstraction(Implementor implementor) {
super(implementor);
}
public void otherOperation(){
System.out.println("其他操作");
}
}
public class MainTest {
public static void main(String arg[]) {
Implementor implementor = new ConcreteImplementorA();
RefinedAbstraction abstraction = new RefinedAbstraction(implementor);
abstraction.operation();
abstraction.otherOperation();
}
}
使用场景
1.如果你不希望在抽象和实现部分采用固定的绑定关系,可以采用桥接模式,来把抽象和实现部分分开,然后在程序运行期间来动态的设置抽象部分需要用到的具体实现,还可以动态切换具体的实现。
2.如果出现抽象部分和实现部分都应该可以扩展的情况,可以采用桥接模式,让抽象部分和实现部分可以独立的变化,从而可以灵活的进行单独扩展,而不是搅在一起,扩展一边可以影响另一边。
3.如果希望实现部分的修改,不会对客户产生影响,可以采用桥接模式,客户是面向抽象的接口在运行,实现部分的修改,可以独立于抽象部分,也就不会对客户产生影响了,也可以说对客户是透明的。
4.如果采用继承的实现方案,会导致产生很多子类,对于这种情况,可以考虑采用桥接模式,分析功能变化的原因,看看是否能分离成不同的维度,然后通过桥接模式来分离他们,从而减少子类的数目。
如果一个系统需要在构建的抽象化角色和具体化角色之间增加更多的灵活性,避免在两个层次之间建立静态的联系。
抽象化角色和具体化角色都应该可以被子类扩展。在这种情况下,桥接模式可以灵活地组合不同的抽象化角色和具体化角色,并独立化地扩展。
设计要求实现化角色的任何改变不应当影响客户端,或者说实现化角色的改变对客户端是完全透明的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# java
# 桥接模式
# Bridge
# Java结构型设计模式中的适配器模式与桥接模式解析
# Java设计模式之桥接模式实例详解
# 23种设计模式(9) java桥接模式
# java设计模式--桥接模式详解
# Java设计模式之java桥接模式详解
# Java设计模式之桥接模式的示例详解
# 详解Java设计模式之桥接模式
# Java设计模式中的桥接模式
# 桥接
# 子类
# 的是
# 客户端
# 还可以
# 也就
# 多个
# 结构图
# 会对
# 这种情况
# 或以上
# 或者说
# 提供一个
# 在这种情况下
# 绑定
# 是否能
# 而将
# 大家多多
# 管理类
# 说对
相关文章:
活动邀请函制作网站有哪些,活动邀请函文案?
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
如何在IIS中新建站点并解决端口绑定冲突?
高防服务器租用指南:配置选择与快速部署攻略
如何零基础在云服务器搭建WordPress站点?
小型网站建站如何选择虚拟主机?
北京的网站制作公司有哪些,哪个视频网站最好?
如何用好域名打造高点击率的自主建站?
网站代码制作软件有哪些,如何生成自己网站的代码?
如何基于云服务器快速搭建网站及云盘系统?
建站之星与建站宝盒如何选择最佳方案?
网站制作软件有哪些,制图软件有哪些?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
深圳网站制作培训,深圳哪些招聘网站比较好?
如何快速生成凡客建站的专业级图册?
如何配置支付宝与微信支付功能?
C++如何将C风格字符串(char*)转换为std::string?(代码示例)
重庆市网站制作公司,重庆招聘网站哪个好?
建站上传速度慢?如何优化加速网站加载效率?
高配服务器限时抢购:企业级配置与回收服务一站式优惠方案
html制作网站的步骤有哪些,iapp如何添加网页?
网站制作难吗安全吗,做一个网站需要多久时间?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何通过服务器快速搭建网站?完整步骤解析
兔展官网 在线制作,怎样制作微信请帖?
如何登录建站主机?访问步骤全解析
建站主机无法访问?如何排查域名与服务器问题
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
如何注册花生壳免费域名并搭建个人网站?
建站之星如何助力企业快速打造五合一网站?
建站之星如何实现五合一智能建站与营销推广?
如何选择域名并搭建高效网站?
常州企业建站如何选择最佳模板?
网站建设设计制作营销公司南阳,如何策划设计和建设网站?
攀枝花网站建设,攀枝花营业执照网上怎么年审?
如何快速搭建虚拟主机网站?新手必看指南
如何快速生成高效建站系统源代码?
如何通过PHP快速构建高效问答网站功能?
小程序网站制作需要准备什么资料,如何制作小程序?
如何快速搭建自助建站会员专属系统?
唐山网站制作公司有哪些,唐山找工作哪个网站最靠谱?
网站好制作吗知乎,网站开发好学吗?有什么技巧?
如何在Golang中使用replace替换模块_指定本地或远程路径
微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?
零服务器AI建站解决方案:快速部署与云端平台低成本实践
定制建站策划方案_专业建站与网站建设方案一站式指南
济南企业网站制作公司,济南社保单位网上缴费步骤?
在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?
如何选购建站域名与空间?自助平台全解析
*请认真填写需求信息,我们会在24小时内与您取得联系。