设计模式之桥梁模式

  桥梁模式亦是结构型设计模式的一种,从名字上理解,像是连接两个元素的一种模式,差不多可以这么理解,但桥梁模式并非是像适配器模式一样适配不适应的两个类的。

  桥梁模式连接的抽象和实现,为了达到抽象和实现这两部分都能变化的目的,必须使用桥梁的聚合作用来达到。这里的抽象部分和实现部分不是我们通常认为的抽象父类和实现子类的关系,而是组合关系。实现部分是被抽象部分调用,以用来完成(实现)抽象部分的功能。

  系统设计中,总是充满了变数,那么采取什么样的设计能较好的解决变化带给系统的影响?一般来说,设计原则是将不变的框架使用抽象类定义出来,然后再将容易变化的内容使用具体的子类来分别实现。这样面对客户使用,只是一个抽象类,当有需要的时候,通过添加新的实现子类来变化,由此缩小了变化带来的影响。但是这可能会造成子类数量的不断增多,并且在很多时候都不够灵活。

  当实现子类上存在一些类似的行为,我们不妨将这些行为提取出来,也采用接口的方式开放调用,然后以组合的方式将服务提供给原来子类。

  这就是桥梁模式的思想,我们来看看桥梁模式的一个例子类图来加深理解。

从这个例子中我们看出,不仅实现部分和抽象部分所提供的接口可以完全不一样;而且实现部分内部、抽象部分内部的接口也完全可以不一样。

桥梁模式有着自己适应的使用环境:

1、当你的系统有多个地方需要重用类似的行为、或是多个类似行为的组合时,桥梁模式能有效减少因为行为的差异产生的子类

2、系统中某个类的行为可能会有几种不同的变化趋势,为了有效的将变化封装,可以考虑将类的行为抽取出来

桥梁模式使用低耦合性的组合达到了不错的灵活性,是体现解耦性很好的设计模式。

时间: 2024-10-30 02:35:30

设计模式之桥梁模式的相关文章

设计模式之桥梁模式20170721

行为型设计模式之桥梁模式: 一.含义 桥梁模式也叫做桥接模式,其定义如下: 将抽象和实现解耦,使得两者可以独立地变化. 只要记住一句话就行:抽象角色引用实现角色,或者说抽象角色的部分实现是由实现角色完成的. 二.代码说明 1.主要有四个角色 1)抽象化角色 它的主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类 2)实现化角色 它是接口或者抽象类,定义角色必须的行为和属性 3)修正抽象化角色 它引用实现化角色对抽象化角色进行修正 4)具体实现化角色 它实现接口或抽象

java设计模式之桥梁模式(Bridge)

1.桥梁模式 与 策略模式 非常相似 (其实很多设计模式都相似,因为所有的模式都是按照设计原则 而设计出来的,设计原则就相当于武功的心法,设计模式就是招式,只要心法过硬,就可以无招胜有招了.) 这里也有比较详细的说明 策略模式 VS 桥梁模式 (画画,使用蜡笔和使用毛笔以及颜料的区别) 好了,这里先说 桥梁模式,最后再总结两者的区别 2.桥梁模式(还是那样,设计模式就是为了代码健壮,代码重用,所以高内聚,低耦合永远都是那么受欢迎,什么抽象类啊,接口啊···) 场景,农民施肥. 这里农民类 调用

设计模式之桥梁模式和策略模式的区别

桥接(Bridge)模式是结构型模式的一种,而策略(strategy)模式则属于行为模式.以下是它们的UML结构图. 桥梁模式: 策略模式: 在桥接模式中,Abstraction通过聚合的方式引用Implementor. 举一个例子: 策略模式:我要画圆,要实心圆,我可以用solidPen来配置,画虚线圆可以用dashedPen来配置.这是strategy模式. 桥接模式:同样是画圆,我是在windows下来画实心圆,就用windowPen+solidPen来配置,在unix下画实心圆就用uni

设计模式之桥梁模式和策略模式的差别

桥接(Bridge)模式是结构型模式的一种,而策略(strategy)模式则属于行为模式.下面是它们的UML结构图. 桥梁模式: 策略模式: 在桥接模式中,Abstraction通过聚合的方式引用Implementor. 举一个样例: 策略模式:我要画圆.要实心圆,我能够用solidPen来配置.画虚线圆能够用dashedPen来配置. 这是strategy模式. 桥接模式:相同是画圆,我是在windows下来画实心圆.就用windowPen+solidPen来配置.在unix下画实心圆就用un

JAVA设计模式之桥梁模式

在阎宏博士的<JAVA与模式>一书中开头是这样描述桥梁(Bridge)模式的: 桥梁模式是对象的结构模式.又称为柄体(Handle and Body)模式或接口(Interface)模式.桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化”. 桥梁模式的用意 桥梁模式虽然不是一个使用频率很高的模式,但是熟悉这个模式对于理解面向对象的设计原则,包括“开-闭”原则以及组合/聚合复用原则都很有帮助.理解好这两个原则,有助于形成正确

java 设计模式 之 桥梁模式

桥梁模式:将抽象和实现解耦,使两者可以独立的变化.解释:将两个有组合关系,强耦合的对象,各自抽象然后解耦.(类关系图看https://www.cnblogs.com/blogxiao/p/9513883.html 这篇文章) 下面以公司生产产品为例子. 1.小汽车公司生产小汽车.这里有两个对象:汽车公司和小汽车.这两个是聚合的关系.类关系图如下: 业务逻辑就是:汽车公司生产汽车产品 2.缺点:扩展性差,当有是个产品需要生产的时候,此时需要在往这里面的增加十个产品类.当有多个公司生产多个产品的时候

设计模式_桥梁模式

Bridge Pattern Decouple an abstraction from its implementation so that the two can vary independently.(将抽象和实现解耦.使得倆者能够独立的变化) 样例 "天下熙熙,皆为利来.天下攘攘,皆为利往"  现实和结构分开 服装公司 ="服装"+"公司" ="服装公司" 解耦之前是服装公司.写一个Corp公司抽象类.然后即可了.解耦后

Java设计模式(五)外观模式 桥梁模式

(九)外观模式 外观模式为子系统提供一个接口,便于使用.解决了类与类之间关系的,外观模式将类之间的关系放在一个 Facade 类中,降低了类类之间的耦合度,该模式不涉及接口. class CPU { public void startup(){ System.out.println("cpu start"); } public void shutdown(){ System.out.println("cpu stop"); } } class Memory { pu

设计模式之禅之设计模式-桥梁模式

一:桥梁模式定义        --->桥梁模式(Bridge Pattern)也叫做桥接模式,是一个比较简单的模式        --->将抽象和实现解耦,使得两者可以独立地变化. 二:桥梁模式角色 ● Abstraction——抽象化角色        它的主要职责是定义出该角色的行为,同时保存一个对实现化角色的引用,该角色一般是抽象类.● Implementor——实现化角色        它是接口或者抽象类,定义角色必需的行为和属性.● RefinedAbstraction——修正抽象