`
wangchao_17915566
  • 浏览: 167834 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

了解桥模式

阅读更多

桥模式:将某个问题抽象的不同形式分别与该问题的具体实现部分相分离,使他们都可以独立变化,并能够动态结合。

      例如电视厂商海尔,长虹生产21寸,29寸电视机。从这里要将它们分离出来,就用到桥模式。电视机与电视机生产厂商挂桥,从而,分离出不同厂商的实现,与不同电视机型号的实现.

     下面看下uml

 

从上图可以看出,将实际抽象分离出来。

看下代码

创建电视机

public abstract class Television {
	//电视厂商
	protected TelevisionMaker televisionMaker;
	//收看电视
	abstract public void teleview(TelevisionMaker televisionMaker);
}

 

接下来创建生产厂商

public abstract class TelevisionMaker {
	abstract public void produce();
}

 

电视机的型号,即继承电视机类

public class Inch21 extends Television{
	
	public void teleview(TelevisionMaker televisionMaker) {
		System.out.println("21寸电视");
	}

}

 

public class Inch29 extends Television{
	
	public void teleview(TelevisionMaker televisionMaker) {
		System.out.println("29寸电视");
	}

}

 

下面是不同厂商,即继承生产厂商

 

public class ChangHong extends TelevisionMaker{

	public ChangHong(){
		System.out.println("长虹厂商");
	}
	
	public void produce() {
		System.out.println("长虹厂商");
	}
}

 

public class Haier extends TelevisionMaker{
	public Haier(){
		System.out.println("海尔厂商");
	}
	
	public void produce() {
		System.out.println("海尔厂商");
	}

}

 

这样就使用了桥模式,将原本繁杂的系统分离开来。如果根据需求变动,要增加电视机生产型号或者电视机生产厂商,只需要实现相对应的抽象类即可。

这样,我们也可以根据用户的需要,得到他所需要的电视机,如长虹厂商出厂的29寸电视机。

测试代码如下:

public class Client {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Inch29 i = new Inch29();
		i.teleview(new ChangHong());
	}
}

 结果:

       长虹厂商
       29寸电视

 

这便达到我们所需要的效果了。希望朋友指出错误与不到指出,谢谢

  • 大小: 13.2 KB
分享到:
评论
7 楼 repsihWDX 2008-12-23  

你也许记成了builde模式吧
引用
动机:一个复杂对象由各部分组成,由于需求变化,各部分急剧变化,但是各部分组成的算法相对稳定。
意图:将一个复杂的对象的构成与其表示相分离,使得同样的构造过程,可以创建不同的表示。



这是什么东西?builder?不会滴,builder是组装对象用的。和bridge不同

6 楼 bloodrate 2008-12-23  
桥模式能实现类似于多继承的咚咚阿
5 楼 yunhaifeiwu 2008-12-15  
fjlyxx 写道
把握不当也许就要变成适配器了

 
    23种模式,不是万能模式,每个都不是完美模式。在学23种模式,要学23种模式后面中深层的东西--------这是个人的观点。我在实际使用中,不是先想到用什么模式,再用该模式的实现。也就是说我不是为了模式而模式;在实践使用中我根本没有模式的概念了。前一阵子,看到各个模式的名称,居然没有印象了。(掌握各个模式的体含义的好处在于,方便沟通交流。在实际使用中,没有模式概含罢了)

    这个桥模式,说实在的,核心实现也就是适配器的实现方式----------对象注入。桥模式与适配器模式,仅仅是各个类由于具体的场景不同而含义不同罢了。在实践中,如何自然区分他们呢?把握设计模式的一个原则即可----------封装变化点。
    下面是来自李建忠讲师的讲义:
   
引用

    引:在实际中有“非常复杂的对象,它们由多个变化维度变化得到的”,如何以较小的代价适应这种变化的呢?这    里不变的是,它们的维度数。例:坦克游戏中,各坦克的型号在变,同时为了适应不同的平台(PC,手机等)。

   意图:将抽象部份与实现部份相分离,使他们都可以独离的变化。


    其中意图,可简单理解成定义。

    桥模式,是两个维度的变化(从GOF给出的UML类图中看)。 如果一个对象,在实际需求中,有两个维度的变化(如:产品的型号规格与生产厂家都在变),我们要封装化点。自然的,各个维度都接定义一个接口,然后再采用对象注入,让两个接口以弱耦合的方式连接起来 。

   如果,不掌握最深成的东西,我们无法得心应手的使用设计模式。举个例子:

   当一个对象,是按三维、四维、五维。。。。。进行变化,我们选用什么设计模式?

  每个维度都用接口与该接口的实现进行规范,用户使用时,尽可能使用接口进行操作,而仅仅是接口,程序是无法运行的,因此向要接口中注入对象。 
  在以上的场景中,我们用的是桥接模式?还是适配模式?  如果每个该对象除了有多个维度在变化,而各个维度中的功能也在不断变化,又怎么实现呢? 每个维度中,又有许多的其他对象组成,而这些对象也在变化怎么办?

  在这种复杂的变化中,这个整体又将用什么模式?能简单归成二十三种模式中的哪一种呢?


  至于适配器模式,从需求上看-----仅仅是让一个接口标准遵循另一接口标准。从实现上看,与桥模式大体相同,即
对象注入。不同在于,桥模式的,允许多个对象注入(引申一下:当非常复杂时,这些注入的对象管理就特重要了,这里用上一个被许多初学者认为没有用的东东-----数据结构。)。而GOF给出的实现中,仅注入了一个对象罢了。



  ==============================================
在这里,不是针对fjlyxx进行反驳。filyxx也说得在理。在这里,仅仅是借其话题,引入自已对设计模式的一些理解与观点。 在二十三种设计模式中,其后面深层次的东西,更应该研究学习。


  
4 楼 yunhaifeiwu 2008-12-15  
repsihWDX 写道
e..我怎么记得bridge模式的关键是产品是由元素组成的,把元素用接口表述。
这样就封装了底层实现,产品的元素拼装过程不需要再去重复修改。如果需要添加不同实现,则直接继承元素接口进行扩展。貌似这个例子不是这样的表述吧..我很久没看dp了。可能记错

所以用bridge的关键在于是否确知了上层不会轻易发生变化。。


你也许记成了builde模式吧
引用
动机:一个复杂对象由各部分组成,由于需求变化,各部分急剧变化,但是各部分组成的算法相对稳定。
意图:将一个复杂的对象的构成与其表示相分离,使得同样的构造过程,可以创建不同的表示。



3 楼 fjlyxx 2008-12-14  
把握不当也许就要变成适配器了
2 楼 xuyao 2008-12-03  
GOF说的是"将抽象部分与它的实现部分分离,使它们都可以独立地变化",各人理解都是不一样的。有些模式从某种意义上来说,很广泛。
1 楼 repsihWDX 2008-12-03  
e..我怎么记得bridge模式的关键是产品是由元素组成的,把元素用接口表述。
这样就封装了底层实现,产品的元素拼装过程不需要再去重复修改。如果需要添加不同实现,则直接继承元素接口进行扩展。貌似这个例子不是这样的表述吧..我很久没看dp了。可能记错

所以用bridge的关键在于是否确知了上层不会轻易发生变化。。

相关推荐

    [源代码] 《易学 设计模式》 随书源代码

    第13章 游刃有余:桥模式 (Bridge) 第14章 如法炮制:组合模式 (Composite) 第15章 源源不断:享元模式 (Flyweight) 第16章 按部就班:模板方法模式 (TemplateMethod) 第17章 风吹草动:观察者模式 (Observer) 第18...

    Mybatis 框架源码10种设计模式分析.pdf

    文章接着介绍了 Mybatis 框架源码中的 10 种设计模式应用,包括工厂模式、单例模式、原型模式、建造者模式、代理模式、适配器模式、桥模式、组合模式、享元模式和解释器模式。这些设计模式的应用能够帮助读者更好地...

    LEDE项目:可怜的人桥模式1

    1. 找到网关设备的文档(手册或在线教程),了解如何做以下几点讨论的内容 2. 将网关配置为与LAN (Local Area Network)网络中使用的子网不

    实现模式@www.java1234.com.pdf.zip

    本书适用于各个阶段的开发者群体,刚刚涉足软件开发领域的新人能够透过大师的眼睛来看待编程,了解编程的价值观与原则;而具有丰富经验的资深工程师则可以通过这些模式进行反思,探究成功实践背后的意义。把价值观、...

    Java23种设计模式6大原则总结.doc

    常见的行为型模式有模板方法模式、命令模式、责任链模式、策略模式、迭代器模式、中介者模式、观察者模式、备忘录模式、访问者模式、状态模式、解释器模式等。 单一职责原则是指一个类应该只有一个职责。其优点是...

    桥梁限载智能拦截系统.pdf

    人工智能技术在该系统中的应用包括数据分析、模式识别和预测等。 3. 系统开发 系统开发是指设计、开发和维护软件和硬件系统的过程。桥梁限载智能拦截系统的开发需要考虑到系统的安全性、可靠性和可扩展性等因素。...

    Java《易学设计模式》随书源码.rar

    Java《易学设计模式》随书源代码,书中介绍了多种JAva模式的方法和使用,比如简单工厂模式、工厂方法模式例子、状态模式例子、迭代器模式、解释器模式、命令模式、模板方法模式、享元模式、桥模式、代理模式、适配器...

    重庆模式.pdf

    "重庆模式" 在本文中,我们可以看到黄奇帆对重庆经济政策的阐述,特别是在...本文提供了一个了解黄奇帆经济政策的重要窗口,展示了重庆经济政策的特征和优势,特别是在国有企业、金融战略和民营企业发展方面的看法。

    实现模式(Implementation Patterns)

    刚刚涉足软件开发领域的新人能够透过大师的眼睛来看待编程,了解编程的价值观与原则;具有丰富经验的资深工程师则可以通过这些模式进行反思,探究成功实践背后的意义。把价值观、原则和开发实践结合之后,日常开发...

    二十三种设计模式【PDF版】

    如果你还不了解设计模式是什么的话? 那就先看设计模式引言 ! 学习 GoF 设计模式的重要性 建筑和软件中模式之异同 A. 创建模式 设计模式之 Singleton(单态/单件) 阎宏博士讲解:单例(Singleton)模式 保证...

    设计模式解析

    阅读本书,读者能够完整地理解12个核心的设计模式和1个分析模式,了解设计模式并不是孤立存在的,多个设计模式协同工作才能创建出更加坚固的应用程序。这里所讲授的12个模式并没有涵盖所有应该学会的模式,但是...

    智简园区WLAN无线网桥技术白皮书.docx

    本白皮书主要介绍华为智简园区WLAN无线网桥技术的解决方案,旨在帮助读者了解WDS/MESH技术的工作原理和应用场景,以便更好地实现远距离无线连接、扩大网络覆盖范围和降低网络部署成本。 1.1 无线网桥技术介绍 无线...

    无线路由、AP、无线网桥之区别详解篇.docx

    所以在设成桥模式的情况下,也可以按网桥的结构来组网,不过在此为了行文方便,我们将从简单的组网拓扑开始,逐步深入到更复杂的拓扑结构中。 无线 AP 的组网拓扑结构相对简单,它可以直接连接到有线局域网,或者...

    高校董事会平台下的校企合作模式

    目前大多数高校董事会定位于决策咨询机构,但由于制度保障和运行体制的问题,这个平台并不能很好地发挥校董双方各自优势,高校应充分利用董事会平台,探索校企双方合作新模式,通过了解企业需求,挖掘自身教育资源优势,...

    软件架构师的12项修炼.docx

    行为型模式是用于处理类和对象之间的行为的模式,软件架构师需要了解常见的行为型模式及其应用场景,如策略模式、模板方法模式、观察者模式等,以提高系统设计的灵活性和可维护性。 通过本书的讲解,读者将深入了解...

    三相桥式逆变器(120 度模式):此仿真仅在 MATLAB 2017 及更高版本的 MATLAB 中正常工作-matlab开发

    该模拟完全用于了解逆变器的 120 度模式。 我希望它对你很有帮助。 如果有任何问题要理解请联系我(nest2020engg@gmail.com)gmail。 谢谢....

    虚拟机VMware的网络配置.pdf

    Bridge模式是将虚拟主机的虚拟网卡桥接到一个Host主机的物理网卡上面,实际上是将Host主机的物理网卡设置为混杂模式,从而达到侦听多个IP的能力。在这种模式下,虚拟主机的虚拟网卡直接与Host主机的物理网卡所在的...

    matrix-puppet-bridge:促进双p矩阵桥的实现

    矩阵-桥 开始之前,请考虑一下风景 该项目是一系列创新项目中的第一个,这些... 这种桥接方式有一个常见的模式,例如重复的消息问题,由此模块处理。 例子 这些桥是使用matrix-puppet-bridge构建的: 常问问题 问

    单相桥双极性调制开环调制、单电压环控制、电压电流双环控制

    模型采用单相桥双极性调制,控制策略包含开环模式、单电压环模式、电压电流双环。通过设置有无死区,可以直观的了解死区效应产生的过零点失真,以及通过控制解决过零点失真的原理。可以验证单环控制与双环控制的动态...

Global site tag (gtag.js) - Google Analytics