首页 > 其他分享 >桥接模式(bridge pattern)

桥接模式(bridge pattern)

时间:2024-02-29 13:46:13浏览次数:27  
标签:bridge 角色 桥接 pattern 模式 实现 抽象 维度

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

桥接模式使用一种巧妙的方式处理多层继承存在的问题,用抽象关联来取代传统的多层继承,将类之间的静态继承关系转变为动态的组合关系,使得系统更加灵活,并易于扩展,有效的控制了系统中的类的个数(避免了继承层次的指数级爆炸),将两个独立变化的维度进行解耦,而不是将两者耦合在一起,形成多层继承结构

桥接(Bridge)模式包含以下主要角色:

  抽象化(Abstraction)角色 :主要负责定义出该角色的行为 ,并包含一个对实现化对象的引用。
  扩展抽象化(RefinedAbstraction)角色 :是抽象化角色的子类,实现父类中的业务方法,并通过组合关系调用实现化角色中的业务方法。
  实现化(Implementor)角色 :定义实现化角色的接口,包含角色必须的行为和属性,并供扩展抽象化角色调用。
  具体实现化(Concrete Implementor)角色 :给出实现化角色接口的具体实现。

 

应用场景:
1.需要提供平台独立性的应用程序时。比如,不同数据库的JDBC驱动程序、硬盘驱动程序等
2.需要在某种统一协议下增加更多组件时。比如支付场景中,我们期望支持微信、支付宝、各大银行的支付组件等。这里的统一协议是收款、支付、扣款,而组件就是微信、支付宝等
3.基于消息驱动的场景。虽然消息的行为比较统一,主要包括发送、接收、处理和回值,但其实具体客户端的实现通常却各不相同,比如,手机短信,邮件消息,QQ消息,微信消息等
4.拆分复杂的类对象时。当一个类中包含大量对象和方法时,既不方便阅读,也不方便修改
5.希望从多个维度上扩展时。比如,系统功能性和非功能性角度,业务或技术角度等

总结:
  优点:
    1.分离了抽象接口及其实现部分,桥接模式使用“对象间的关联关系”解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化
    2.在很多情况下,桥接模式可以取代多层继承方案(多层继承方案违背了单一职责原则,复用性差,类的个数多),桥接模式很好的解决了这些问题
    3.桥接模式提高了系统的扩展性,在两个变化维度中任意扩展一个维度都不需要修改原有的系统,符合开闭原则
  缺点:
    1.桥接模式的使用会增加系统的理解和设计难度,由于关联关系建立在抽象层,要求开发者一开始就对抽象层进行设计和编程
    2.桥接模式要求正确识别出系统中的两个独立变化的维度,因此具有一定的局限性,并且如果正确的进行维度的划分,也需要相当丰富的经验

 

标签:bridge,角色,桥接,pattern,模式,实现,抽象,维度
From: https://www.cnblogs.com/HelloWorldKivsenTrprio/p/18042708

相关文章

  • 桥接模式
    简介桥接模式(BridgePattern)是一种结构型设计模式,它主要用于将抽象部分与实现部分分离,从而使它们可以独立变化。桥接模式通过将继承关系转化为组合关系,使得抽象部分和实现部分可以独立地变化,不会相互影响。在桥接模式中,抽象部分通常指的是一个抽象类或接口,它定义了对外的接口或......
  • 23 design patterns
    ///-----------------23个设计模式是7个原则的具体形式,7原则是23个模式的凝练------------------//////-----------------target:高内聚、低耦合------------------///1.软件设计模式结构类比就是结构class或者是结构体行为类比class里面的函数创造的话,是构造出结构,让......
  • [Rust] Handle errors in Rust using Pattern Matching
    Inthislessonwe'llexplorehowtounwrapa Result typeusingalanguagefeaturecalledPatternMatching. usestd::io;fnmain(){letmutfirst=String::new();io::stdin().read_line(&mutfirst).unwrap();letmuta:u32=......
  • 读论文-基于序列模式的电子商务推荐系统综述(A Survey of Sequential Pattern Based E
    前言今天读的论文为一篇于2023年10月3日发表在《算法》(Algorithms)的论文,这篇文章综述了基于序列模式的电子商务推荐系统,强调了通过整合用户购买和点击行为的序列模式来提高推荐准确性、减少数据稀疏性、增加推荐新颖性,并改善推荐系统的可扩展性。文章详细分析了现有推荐系统的......
  • el-form表单使用pattern自定义校验规则
    //正则校验的正则表达式,这里注意正则表达式中的‘\’要使用‘\\’转义constpatterns={"name":"^[a-zA-Z_][0-9a-zA-Z_]{0,}$","tel":"^1[2-9]\\d{0,}$","email":"^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-......
  • design pattern 7 原则
    ///-----------------23个设计模式对对7个原则的具体形式,7原则是23个模式的凝练------------------//////-----------------target:高内聚、低耦合------------------///单一职责原则(SingleResponsibilityPrinciple-SRP):一个类应该只有一个引起变化的原因。换句话说,一......
  • 为什么要开 bridge-nf-call-iptables?
    为什么要开bridge-nf-call-iptables?Kubernetes环境中,很多时候都要求节点内核参数开启 bridge-nf-call-iptables:sysctl-wnet.bridge.bridge-nf-call-iptables=1 参考官方文档 NetworkPluginRequirements如果不开启或中途因某些操作导致参数被关闭了,就可能造......
  • bridge设备
    什么是bridgebridge是一个虚拟网络设备,可以配置IP、MAC地址等,bridge是一个虚拟交换机,和物理交换机有类似的功能。普通的网络设备两端,数据会从一端进入然后从另一端出去,如物理网卡从外部网络中收到的数据会转发给内核协议栈,而从协议栈过来的数据会转发到外部的物理网络中。......
  • 桥接模式
    桥接模式(Bridge模式)是一种结构型设计模式,它将抽象部分与它的实现部分分离,使它们都可以独立地变化。这种模式的核心意图是将抽象和实现解耦,使得抽象部分和实现部分可以独立地进行扩展和变化,而不会互相影响。桥接模式包含两个主要角色:抽象化(Abstraction)角色和实现化(Implementor)角色......
  • Java中正则表达式(regex)匹配多行(Pattern.MULTILINE和Pattern.DOTALL模式)
    ​ Java中,正则表达式(regex)的处理是通过Pattern类实现的。Pattern类提供了多种标志(flags)来修改正则表达式的行为。其中,Pattern.MULTILINE和Pattern.DOTALL是两个常用的模式,它们分别用于处理多行文本和让.匹配包括行终止符在内的任意字符。 参考文档:Java中正则表达式(regex)匹......