软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径。设计模式中运用了面向对象编程语言的重要特性:封装、继承、多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累。最近看设计模式的书,对于每个模式,用C++写了个小例子,加深一下理解。主要参考《大话设计模式》和《设计模式:可复用面向对象软件的基础》两本书。本文介绍桥接模式的实现。

[DP]书上定义:将抽象部分与它的实现部分分离,使它们都可以独立地变化。考虑装操作系统,有多种配置的计算机,同样也有多款操作系统。如何运用桥接模式呢?可以将操作系统和计算机分别抽象出来,让它们各自发展,减少它们的耦合度。当然了,两者之间有标准的接口。这样设计,不论是对于计算机,还是操作系统都是非常有利的。下面给出这种设计的UML图,其实就是桥接模式的UML图。

给出C++的一种实现:

[cpp] view plaincopy print?
  1. //操作系统
  2. class OS
  3. {
  4. public:
  5. virtual void InstallOS_Imp() {}
  6. };
  7. class WindowOS: public OS
  8. {
  9. public:
  10. void InstallOS_Imp() { cout<<"安装Window操作系统"<<endl; }
  11. };
  12. class LinuxOS: public OS
  13. {
  14. public:
  15. void InstallOS_Imp() { cout<<"安装Linux操作系统"<<endl; }
  16. };
  17. class UnixOS: public OS
  18. {
  19. public:
  20. void InstallOS_Imp() { cout<<"安装Unix操作系统"<<endl; }
  21. };
  22. //计算机
  23. class Computer
  24. {
  25. public:
  26. virtual void InstallOS(OS *os) {}
  27. };
  28. class DellComputer: public Computer
  29. {
  30. public:
  31. void InstallOS(OS *os) { os->InstallOS_Imp(); }
  32. };
  33. class AppleComputer: public Computer
  34. {
  35. public:
  36. void InstallOS(OS *os) { os->InstallOS_Imp(); }
  37. };
  38. class HPComputer: public Computer
  39. {
  40. public:
  41. void InstallOS(OS *os) { os->InstallOS_Imp(); }
  42. };

客户使用方式:

[css] view plaincopy print?
  1. int main()
  2. {
  3. OS *os1 = new WindowOS();
  4. OS *os2 = new LinuxOS();
  5. Computer *computer1 = new AppleComputer();
  6. computer1->InstallOS(os1);
  7. computer1->InstallOS(os2);
  8. }

设计模式C++实现(10)——桥接模式相关推荐

  1. 如何让孩子爱上设计模式 ——10.桥接模式(Bridge Pattern)

    如何让孩子爱上设计模式 --10.桥接模式(Bridge Pattern) 标签: 设计模式初涉 我有故事,你有酒吗?这年头写个技术文不讲个故事都不行,行,我讲: 还有发现很多的技术博文都开始有喜欢往 ...

  2. php设计模式课程---9、桥接模式是什么

    php设计模式课程---9.桥接模式是什么 一.总结 一句话总结: 一个类没干完,另外一个类接着给它干完 实质是类的拼接,也就是用类的组合代替了类的继承,因为类的组合可以有很多种方式,所以桥接就是类的 ...

  3. linux桥接设置静态,centos6.10 桥接模式下配置静态ip

    centos6.10 桥接模式下配置静态ip主要是修改以下三个地方: /etc/sysconfig/network-scripts/ifcfg-eth0(这个文件名版本不同文件名也不同,可以先cd / ...

  4. 大战设计模式【16】—— 桥接模式

    桥接模式(Bridge) 设计模式使用的例子https://github.com/LinkinStars/DesignPatternsAllExample 一.定义 将抽象部分与其实现部分分离,使得他 ...

  5. 漫谈设计模式--3分钟理解桥接模式:笔和画的关系

    其实不需要3分钟,3秒钟就够了,记住桥接模式就是如此简单:一句话,笔有千般形,画有万变化. 下面的仅仅助于理解. 1. 定义 The bridge pattern is a design patter ...

  6. 【设计模式】7、桥接模式

    桥接模式就是对一个类的方法进行抽象化,吧不相关的因素提取出来,发展出第二个类 1 package com.shejimoshi.structural.Bridge; 2 3 4 /** 5 * 功能: ...

  7. 设计模式笔记七:桥接模式

    原文:http://www.runoob.com/design-pattern/ 少许个人理解,如有错误请指出.欢迎一起讨论. 同之前的原型模式,这一节菜鸟教程也比较抽象,仍然找一篇好懂的博客文章补充 ...

  8. 【Java设计模式】简单学桥接模式——来杯大杯加奶不加糖咖啡

    目录 说明 目标 实现方式 应用场景 其他链接 说明 结构型模式之一,其他还有适配器模式.装饰模式.组合模式.外观模式.享元模式.代理模式 目标 用抽象关联取代了多层继承,将类之间的静态继承关系转换为 ...

  9. 设计模式(9)[JS版]-JavaScript设计模式之如何实现桥接模式???

    目录 1 什么是桥接模式 2 参与者 3 实例讲解 4 总结 1 什么是桥接模式 Bridge模式允许两个组件,即客户端和服务一起工作,每个组件都有自己的接口.Bridge是一种高级架构模式,它的主要 ...

  10. 设计模式之浅浅的理解桥接模式

    网上有不少博文都深入浅出的论述了桥接模式的作用和设计方法.不过我总觉得自己理解得不到位. 下边是我的理解和实验. 桥接模式理解: 在理解桥接模式中,网上的博客中都谈到抽象与实现的分离,这里的实现与继承 ...

最新文章

  1. python类不支持多继承_Java和C#等不允许多继承类,但是Python是可以的
  2. wireshark协议解析器 源码分析 封装调用
  3. 【Android 逆向】Android 中常用的 so 动态库 ( 拷贝 /system/lib/ 中的 Android 系统 so 动态库 )
  4. 【报错】ValueError: not enough values to unpack expected 2, got1
  5. 又一次Task.Wait引起的教训
  6. “哪里有人喜欢孤独,不过是害怕失望罢了”———村上春树《东尼泷谷》观后感...
  7. 三种强大的物体识别算法——SIFT/SURF、haar特征、广义hough变换的特性对比分析
  8. windows2003 ftp 无法下载 解决
  9. 直接拿来用!前端如何快速实现跨平台开发?
  10. C/C++ 远程开发 - NetBeans IDE 教程 -转
  11. 变量的数据类型和类型转换(二)
  12. 分布式爬虫搭建系列 之二-----神器PyCharm的安装
  13. java.lang.Classlt;Tgt;
  14. win32多线程(三) 死锁
  15. ENVI大气校正后遥感图像颜色变了及编辑头文件
  16. 微信公众号笔记(一)
  17. Eclipse中文版的,怎么变成英文版
  18. 威联通配置docker同步阿里云盘
  19. 2017南开秋奥鹏作业计算机,南开17秋学期《DirectX程序设计》在线作业(资料)...
  20. 【GZH逸佳君】:科技感膨爆,观赏性极强:送你PS粒子飞溅特效插件,1秒瞬间爆开

热门文章

  1. Interview:算法岗位面试—10.11下午—上海某公司算法岗位(偏数据分析,证券金融行业)技术面试考点之sqlserver语言相关考察点复习
  2. ML:分类预测问题中评价指标(ER/混淆矩阵P-R-F1/ROC-AUC/RP/mAP)简介、使用方法、代码实现、案例应用之详细攻略
  3. 替换UI--遮挡问题
  4. linux下的动态链接库和静态链接库到底是个什么鬼?(一)静态链接库的编译与使用...
  5. 自绘制View---------左右滑动刻度调频View
  6. C#3.0 为我们带来什么(2) —— 自动属性
  7. PCMCIA接口采集卡系列
  8. jieba分词(python使用篇)(一)
  9. 解决安装centos 7后Windows启动项丢失
  10. EOS 智能合约源代码解读 (5)class contract