桥梁模式

将抽象部分与实现部分分离,使得他们两部分可以独立的变化。

有这样一个例子:我们希望可以在windows和Linux下都可以查看BMP、JPEG、GIF类型文件。纯粹的继承就需要2*3个子类而桥梁模式只需要2+3个子类。减少了子类的个数

  /*** 图像实现类接口*/public interface ImageImp{//  TODO}/*** 具体实现类*/public class Winimp implements ImageImp {// TODO}public class Unix implements ImageImp {// TODO}
  /*** 抽象image类型,包含ImageImp接口引用* @author jiahua**/public abstract class Image{protected ImageImp imp;public Image(ImageImp image) {imp = image;}public abstract void Method();}
  /*** 实现类*/public class BMPImage extends Image{@Overridepublic void Method() {// 通过抽象父类的setImageImp方法获取操作系统ImageImp类,//结合自己BMP图像实现类,完成具体方法}}
  public static void main(String[] args) {BMPImage bmp = new BMPImage();      // 具体图像类ImageImp winimp = new Winimp();     //具体系统类bmp.setImageImp(winimp);           //注入bmp.Method();                      //实现图像和系统功能的方法}

桥梁模式可以从接口中分离实现功能,使设计更具扩展性

访问者模式

访问者模式,是行为型设计模式之一。访问者模式是一种将数据操作与数据结构分离的设计模式。

下面看一个例子,当车出问题,维修工程师要检查车辆的发动机、车身、轮胎之中一个或多个。

每一个稳定组件对象都包含一个可以让访问者(维修工人)访问的入口,当访问者进入后,在访问者众多的方法中选择一个适合该被访问者的方法,达到区别对待的目的。

  /*** 访问者* @author jiahua**/public interface Visitor{void visit(Body body);        //  检查车身void visit(Wheel wheel);      //  检查轮胎void visit(Engine engine);    //  发动机}
  /*** 接受访问的方法* @author jiahua**/public class Wheel{void accept(Visitor visitor) {visitor.visit(this);}}public class Body{void accept(Visitor visitor) {visitor.visit(this);}}public class Engine{void accept(Visitor visitor) {visitor.visit(this);}}
  /*** 具体访问者* @author jiahua**/public class engineer implements Visitor{@Overridepublic void visit(Body body) {// TODO Auto-generated method stub}@Overridepublic void visit(Wheel wheel) {// TODO Auto-generated method stub}@Overridepublic void visit(Engine engine) {// TODO Auto-generated method stub}}
  public static void main(String[] args) {Wheel wheel = new Wheel();Visitor visitor = new engineer();wheel.accept(visitor);}

访问者模式使增加新的操作变得容易,他可以收集有关联的方法,而分离没有关联的方法,特别适用于分离因为不同原因而变化的事物。

桥梁模式和访问者模式的区别

通过上述两种模式的示例,不难发现这一点。他们都通过将对象传入另一个对象中,完成两个对象结合使用完成功能的目的。

不同的是:访问者更多凸显的是将行为抽象出来,实现行为与数据的结合。而桥梁模式并没有凸显这一点。两种设计模式所属的类别无疑是原因之一。

桥梁模式和访问者模式相关推荐

  1. 图解Java设计模式学习笔记——行为型模式(模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式)

    一.模板方法模式(模板模式)--钩子方法 1.需求-豆浆制作问题 编写制作豆浆的程序,说明如下: 制作豆浆的流程选材-->添加配料-->浸泡-->放到豆浆机打碎. 通过添加不同的配料 ...

  2. 设计模式(行为型模式)——访问者模式(Visitor)

    2019独角兽企业重金招聘Python工程师标准>>> 访问者模式把数据结构和作用于结构上的操作解耦合,使得操作集合可相对自由地演化.访问者模式适用于数据结构相对稳定算法又易变化的系 ...

  3. 设计模式之观察者模式、中介者模式、迭代器模式、访问者模式、备忘录模式、解释器模式

    前言 这是设计模式的最后一章,包含了剩余的 行为型模式 中的 观察者模式.中介者模式.迭代器模式.访问者模式.备忘录模式.解释器模式 系列文章 第一章:7种设计原则之单一职责原则.接口隔离原则.依赖倒 ...

  4. 行为型模式:访问者模式

    前方高能:<一故事一设计模式>PDF 电子书已经上线,关注公众号即可获取. 文章首发: 行为型模式:访问者模式 十一大行为型模式之十一:访问者模式. 简介 姓名 :访问者模式 英文名 :V ...

  5. 行为型模式之访问者模式

    行为型模式之访问者模式 定义 场景 模式结构和说明 项目介绍 设计 示例代码 模式讲解 1. 模式的功能 2. 调用通路 3. 两次分发技术 定义 表示一个作用于某对象结构中的各元素的操作.它让我们可 ...

  6. 行为型模式【访问者模式】

    行为型模式[访问者模式] 访问者模式是一种将数据结构与数据操作分离的设计模式.是指封装一些作用于某些数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作.属于行为型模式 ...

  7. 设计模式之适配器模式、委派模式、访问者模式、工厂模式、桥接模式(双维度扩展)

    设计模式之适配器模式.委派模式.访问者模式.工厂模式.观察者-发布订阅模式 设计模式分类: 适配器模式(Adapter Pattern) 定义 使用场景 代码实现 写法一:类适配器 写法二:对象适配器 ...

  8. [导入]C#面向对象设计模式纵横谈(24):(行为型模式) Visitor 访问者模式.zip(10.41 MB)...

    讲座内容: 本培训课程探讨GoF23之 Visitor 访问者模式的意图.动因.原理.应用场景与C#语言实现,以及该模式在.NET框架程序设计中的具体应用. 课程讲师: 李建忠 上海祝成信息科技有限公 ...

  9. 三、行为型模式【访问者模式、备忘录模式、命令模式、解释器模式、中介模式】

    访问者模式 允许一个或者多个操作应用到一组对象上,解耦操作和对象本身,保持类职责单一.满足开闭原则以及应对代码的复杂性. 多态是一种动态绑定,可以在运行时获取对象的实际类型,来运行实际类型对应的方法. ...

最新文章

  1. “AI明星”地平线B轮融资6亿美元!
  2. 怎样才有资格被称为开源软件
  3. 原理图连线有错误提醒_拔罐方法不对=缩短生命,中医提醒,拔火罐警惕三个禁忌...
  4. C语言重新定位文件,C语言代码重定位 (原创)
  5. 九章算术卷第五 商功
  6. [转]VS2010中的单元测试
  7. azkaban的操作指南
  8. 人大副教授:本科生一定要做科研吗?九大灵魂拷问
  9. Oracle 11g for Windows 简体中文版的安装过程
  10. 内联元素转化为内联块元素的一些小细节
  11. 一起学爬虫(Python) — 03
  12. Fast Non-Bayesian Poisson Factorization for Implicit-Feedback Recommendations
  13. linux下7z压缩包解压
  14. linux配置防火墙白名单(限制某个IP段)
  15. my.宝石 --- --- ZC 收集
  16. Assignment #2 STA355H1S
  17. 源码解析6-系统封装-QTableView实现
  18. Android 自定义带Logo的二维码图标
  19. 2014多益网络笔试题
  20. PSINS运动轨迹与惯性器件信息生成仿真

热门文章

  1. c/c++游戏编程之控制台贪吃蛇(一)
  2. [ssh config]ssh登陆信息配置
  3. 不仅是电子书 方正宏基强强联合PK联想
  4. 婚纱摄影管理系统的设计
  5. 穿旗袍的女人,蕴涵着贤淑的女人味
  6. 少儿Python编程_第十八讲 搭建网站
  7. 首钢运城机器人_首钢智能检测机器人成功上线
  8. 将集群WEB节点静态数据迁移到共享存储器(LNMP环境)
  9. Jmeter并发测试:重现插入重复数据问题
  10. LAMP兄弟连 51期 全体敬上