概述

桥接模式一种结构型模式,它主要应对的是:由于实际的需要,某个类具有两个或以上的维度变化,如果只是用继承将无法实现这种需要,或者使得设计变得相当臃肿。
桥接模式的做法是把变化的部分抽象出来,使变化部分与主类分离开来,从而将多个维度的变化彻底分离。最后,提供一个管理类来组合不同维度上的变化,通过这种组合来满足业务的需要。
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设计模式中的桥接模式
# 桥接
# 子类
# 的是
# 客户端
# 还可以
# 也就
# 多个
# 结构图
# 会对
# 这种情况
# 或以上
# 或者说
# 提供一个
# 在这种情况下
# 绑定
# 是否能
# 而将
# 大家多多
# 管理类
# 说对
相关文章:
建站主机解析:虚拟主机配置与服务器选择指南
如何快速搭建高效WAP手机网站?
深圳网站制作案例,网页的相关名词有哪些?
c# 服务器GC和工作站GC的区别和设置
建站之星微信建站一键生成小程序+多端营销系统
网站制作话术技巧,网站推广做的好怎么话术?
高端网站建设与定制开发一站式解决方案 中企动力
制作旅游网站html,怎样注册旅游网站?
制作网站公司那家好,网络公司是做什么的?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
常州企业网站制作公司,全国继续教育网怎么登录?
网站微信制作软件,如何制作微信链接?
网站制作的步骤包括,正确网址格式怎么写?
如何在服务器上配置二级域名建站?
,sp开头的版面叫什么?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
高性价比服务器租赁——企业级配置与24小时运维服务
焦点电影公司作品,电影焦点结局是什么?
常州企业建站如何选择最佳模板?
h5网站制作工具有哪些,h5页面制作工具有哪些?
一键网站制作软件,义乌购一件代发流程?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
网站app免费制作软件,能免费看各大网站视频的手机app?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
海南网站制作公司有哪些,海口网是哪家的?
建站之星2.7模板快速切换与批量管理功能操作指南
北京建设网站制作公司,北京古代建筑博物馆预约官网?
如何通过FTP空间快速搭建安全高效网站?
如何选择适配移动端的WAP自助建站平台?
平台云上自助建站如何快速打造专业网站?
建站主机选购指南:核心配置优化与品牌推荐方案
如何零成本快速生成个人自助网站?
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
制作网站外包平台,自动化接单网站有哪些?
如何在Golang中使用replace替换模块_指定本地或远程路径
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?
建站之星伪静态规则如何正确配置?
c# 在ASP.NET Core中管理和取消后台任务
宝塔建站后网页无法访问如何解决?
宠物网站制作html代码,有没有专门介绍宠物如何养的网站啊?
网站按钮制作软件,如何实现网页中按钮的自动点击?
北京网页设计制作网站有哪些,继续教育自动播放怎么设置?
高端云建站费用究竟需要多少预算?
建站之星安装后界面空白如何解决?
网站专业制作公司有哪些,做一个公司网站要多少钱?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
建站之星与建站宝盒如何选择最佳方案?
*请认真填写需求信息,我们会在24小时内与您取得联系。