Bridge 模式将抽象和行为划分开来,各自独立,但能动态的结合。在面向对象设计的基本概念中,对象这个概念实际是由属性和行为两个部分组成的,属性我们可以认为是一种静止的,是一种抽象,一般情况下,行为是包含在一个对象中,但是,在有的情况下,我们需要将这些行为也进行归类,形成一个总的行为接口,这就是桥模式的用处。

  1. ///////////////Abstraction.h/////////////
  2. #pragma once
  3. class AbstractionImp ;
  4. class Abstraction
  5. {
  6. public:
  7. virtual ~Abstraction();
  8. virtual void Operation() = ;
  9. protected:
  10. Abstraction();
  11. private:
  12. };
  13.  
  14. class RefinedAbstraction : public Abstraction
  15. {
  16. public:
  17. ~RefinedAbstraction();
  18. RefinedAbstraction();
  19. RefinedAbstraction(AbstractionImp* imp);
  20. void Operation();
  21. protected:
  22. private:
  23. AbstractionImp* _imp ;
  24. };
  1. ///////////////Abstraction.cpp/////////////
  2. #include "Abstraction.h"
  3. #include "AbstractionImp.h"
  4. Abstraction::~Abstraction()
  5. {
  6.  
  7. }
  8. Abstraction::Abstraction()
  9. {
  10.  
  11. }
  12. void Abstraction::Operation()
  13. {
  14.  
  15. }
  16.  
  17. RefinedAbstraction::~RefinedAbstraction()
  18. {
  19.  
  20. }
  21. RefinedAbstraction::RefinedAbstraction()
  22. {
  23.  
  24. }
  25. RefinedAbstraction::RefinedAbstraction(AbstractionImp* imp)
  26. {
  27. _imp = imp ;
  28. }
  29. void RefinedAbstraction::Operation()
  30. {
  31. _imp->Operation();
  32. }
  1. ///////////////AbstractionImp.h/////////////
  2. #pragma once
  3. class AbstractionImp
  4. {
  5. public:
  6. virtual ~AbstractionImp();
  7. virtual void Operation() = ;
  8.  
  9. protected:
  10. AbstractionImp();
  11. private:
  12. };
  13.  
  14. class ConcreteAbstractionImpA : public AbstractionImp
  15. {
  16. public:
  17. ~ConcreteAbstractionImpA();
  18. ConcreteAbstractionImpA();
  19. void Operation();
  20. protected:
  21. private:
  22. };
  23.  
  24. class ConcreteAbstractionImpB : public AbstractionImp
  25. {
  26. public:
  27. ~ConcreteAbstractionImpB();
  28. ConcreteAbstractionImpB();
  29. void Operation();
  30. protected:
  31. private:
  32. };
  1. ///////////////AbstractionImp.cpp/////////////
  2. #include "AbstractionImp.h"
  3. #include <iostream>
  4. using namespace std;
  5. AbstractionImp::~AbstractionImp()
  6. {
  7.  
  8. }
  9. AbstractionImp::AbstractionImp()
  10. {
  11.  
  12. }
  13. void AbstractionImp::Operation()
  14. {
  15.  
  16. }
  17. ConcreteAbstractionImpA::~ConcreteAbstractionImpA()
  18. {
  19.  
  20. }
  21. ConcreteAbstractionImpA::ConcreteAbstractionImpA()
  22. {
  23.  
  24. }
  25. void ConcreteAbstractionImpA::Operation()
  26. {
  27. cout<<"ConcreteAbstractionImpA...."<<endl;
  28. }
  29.  
  30. ConcreteAbstractionImpB::~ConcreteAbstractionImpB()
  31. {
  32.  
  33. }
  34. ConcreteAbstractionImpB::ConcreteAbstractionImpB()
  35. {
  36.  
  37. }
  38. void ConcreteAbstractionImpB::Operation()
  39. {
  40. cout<<"ConcreteAbstractionImpB...."<<endl;
  41. }
  1. ///////////////main.cpp/////////////
  2. #include "Abstraction.h"
  3. #include "AbstractionImp.h"
  4. #include <iostream>
  5. using namespace std ;
  6. int main()
  7. {
  8. AbstractionImp* impA = new ConcreteAbstractionImpA();
  9. Abstraction* abs = new RefinedAbstraction(impA);
  10. abs->Operation();
  11. system("pause");
  12. return ;
  13. }

Bridge 模式的更多相关文章

  1. Bridge模式——对象结构型模式

    今天看了Bridge模式,对其进行简单的总结,并给出几篇通俗易懂的文章链接. (一)意图--将抽象部分和它的实现部分分离,使它们都可以独立地变化. 适用于从多维度描述的类型,拆解开来,使其能沿着各维度 ...

  2. Abstract Server模式,Adapter模式和Bridge模式

    简易的台灯 Abstract Server模式 谁拥有接口. 接口属于它的客户,而不是它的派生类. 接口和客户之间的逻辑关系,强于接口和其派生类的逻辑关系. 逻辑关系和实体关系的强度是不一致的.在实体 ...

  3. 【结构型】Bridge模式

    桥接模式是为了将对象的抽象与实现分离,使得它们可以独立变化.简简单单的一句话,却已经是站在了更高抽象层面上来看待.设计.解决问题.平常我们多是对具体问题进行分析.抽象,然后就开始设计,这对多数情况下基 ...

  4. 【设计模式】Bridge模式(桥接模式)

    最近的一次面试中,被问到桥接模式,以前呢并没有很仔细的研究过这个设计模式,借此机会剖析一下. 先给出自己对这个模式理解后的源码: interface A{ void methodA(); } inte ...

  5. 设计模式之桥接模式(Bridge模式)

    我想大家小时候都有用蜡笔画画的经历吧.红红绿绿的蜡笔一大盒,根据想象描绘出格式图样.而毛笔下的国画更是工笔写意,各展风采.而今天我们的故事从蜡笔与毛笔说起. 设想要绘制一幅图画,蓝天.白云.绿树.小鸟 ...

  6. 设计模式之——bridge模式

    Bridge模式,又叫桥接模式,是针对同一接口进行扩展与实现操作的一种设计模式. 这种模式,与之前学过的适配器模式具有相似的地方,也有不同的地方,下面就让我们一一解析吧. 首先,我们要了解到,为什么需 ...

  7. java 实现Bridge模式(转)

    原文:http://chjking.blog.163.com/blog/static/6439511120081152534252/ 看了网上一些关于咖啡加奶的例子,觉得真是天下文章一大抄,不管好的坏 ...

  8. (原创)composite模式和bridge模式是天生的好朋友

    composite模式的意图是:将对象组合成树形结构以表示“部分-整体”的层次结构.composite使得用户对单个对象和组合对象的使用具有一致性.它的类图如下: composite模式的实现分为透明 ...

  9. Java设计模式(6)桥模式(Bridge模式)

    Bridge定义:将抽象和行为划分开来,各自独立,但能动态的结合. 为什么使用桥模式 通常,当一个抽象类或接口有多个具体实现(concrete subclass),这些concrete之间关系可能有以 ...

随机推荐

  1. Maven学习(3) - Maven和Eclipse集成和构建多模块Maven项目

    最近在工作中越来越经常的用到了Maven作为项目管理和Jar包管理和构建的工具,感觉Maven的确是很好用的.而且要将Maven的功能最大发挥出来,多模块是一个很好的集成例子. 一个Maven项目包括 ...

  2. Hibernate(六)一对一双向关联映射

    在上次的博文Hibernate从入门到精通(五)一对一单向关联映射中我们讲解了一下一对一单向关联映射, 这次我们继续讲解一下与之对应的一对一双向关联映射. 一对一双向关联 与一对一单向关联映 射所不同 ...

  3. TortoiseSVN优化设置

    设置log messages的字体 TortoiseSVN默认的字体太小了,看着难受: 可以在Settings > 左侧目录树General > Dialogs 1中进行设置: 使用Bey ...

  4. 用GPUImage开启相机并且开启滤镜效果

    GPUImage提供了GPUImageVideoCamera这么一个类,它的对象能够调用摄像头,并且加上滤镜的效果.     //init VideoCamera     //这里的两个参数可以设定拍 ...

  5. android进程间通信:使用AIDL

    android 的binder其实是基于 openbinder实现的,openbinder的地址:http://www.angryredplanet.com/~hackbod/openbinder/d ...

  6. Circle - SGU 130(递推)

    题目大意:一个圆上有2K个点,用K个线把他们连接起来,求出这些线最少可以把这个圆分成P部分,有N种分割方法.输出N和P. 分析:分割线一定是相互不相交的线,所以可以把这写分成两部分,f[i] += f ...

  7. hdoj 2899 Strange fuction【二分求解方程】

    Strange fuction Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  8. [每日一题] OCP1z0-047 :2013-08-02 权限―――分配系统权限

    这题是考权限的知识点,权限分为两大类,系统权限和对象权限,这题主要讲系统权限,我们先来了解什么是系统权,什么是对象权限吧. 1.系统权限:允许用户在数据库中执行特定的操作 A.SYSDBA/SYSOP ...

  9. win8.1 无法安装 net framework3.5的解决办法

    近期给重装系统时,发现Windows8.1无法安装.net framework 3.5,即使我离线下载了安装文件,还要求安装2.0和3.0....而且无法从Windows更新中获取,因此百度到以下方案 ...

  10. Spring事务-三种实现方式

    一.引入JAR文件: 二.开始搭建分层架构---创建账户(Account)和股票(Stock)实体类 Account: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ...