桥设计模式事实上就是一个简单的has a relationship。就是一个类拥有还有一个类,并使用还有一个类实现须要的功能。

比方遥控器和电视之间能够使用桥设计模式达到能够使用同一个遥控器控制多台电视机的目的。

这种设计思想是多种设计模式反重复复使用基本思想。

细致思考下会发现多种设计模式的底层思想事实上是相通的。只是详细实现或者某些细节。应用等有那么一点区别罢了。

以下就实现一个TV和remoter类,当中的remoter是能够随时更换的。

#include <stdio.h>

class Remoter
{
public:
virtual void changeChannel() = 0;
}; class OldRemoter : public Remoter
{
short channel;
public:
OldRemoter(short c) : channel(c) {}
void changeChannel()
{
printf("Channel : %d\n", channel++);
}
}; class NewRemoter : public Remoter
{
int channel;
public:
NewRemoter(int c) : channel(c) {}
void changeChannel()
{
printf("Channel : %d\n", channel++);
}
}; class TV
{
protected:
Remoter *remoter;
int channel;
public:
TV(Remoter *r) : remoter(r), channel(0) {}
virtual void changeRemoter(Remoter *r)
{
remoter = r;
} virtual void changeChannel()
{
remoter->changeChannel();
}
}; class BrandOneTV : public TV
{
public:
BrandOneTV(Remoter *r) : TV(r){}
}; int main()
{
Remoter *ore = new OldRemoter(0);
Remoter *nre = new NewRemoter(1); TV *tv1 = new BrandOneTV(ore);
tv1->changeChannel();
ore->changeChannel();
tv1->changeChannel(); tv1->changeRemoter(nre);
tv1->changeChannel();
nre->changeChannel();
tv1->changeChannel(); return 0;
}

执行:

Design Pattern Bridge 桥设计模式的更多相关文章

  1. Design Pattern ->Bridge

    Layering & Contract Philosophy With additional indirection. class CWindowImp { public: virtual v ...

  2. Design Pattern Iterator 迭代器设计模式

    这个设计模式感觉很easy,我们平时敲代码的时候也是常常须要调用iterator的,C++和Java都是. 所以感觉没什么特别的.就是须要模仿C++或者Java的iterator类的功能吧. 这里简单 ...

  3. Design Pattern Memo 备忘录设计模式

    本设计模式就是简单地记录当前状态.然后利用记录的数据恢复. 比方首先我们有一个类.类须要记录当前状态进行相关的工作的: class Memo; class Human { public: string ...

  4. design pattern Builder 生成器设计模式

    其实设计模式可以学习很有趣,你并不需要有这么难啃旱地FOG对我来说,当然,这些都是健康的骨骼啃啃. 在本文中,建造者模式设计一个搞笑的一幕.根据这一模型来学习功夫的方法,哈哈. 基类的第一,设计.那么 ...

  5. Design Pattern Command 命令设计模式

    这种设计模式是使用不同类的包裹不同的命令,达到什么样的命令执行什么操作. 有可能进一步利用map您最喜欢的对接命令字. 正在运行的类实际上已经包含了操作的所有需求,例如: class SuperMak ...

  6. Flyweight Design Pattern 共享元设计模式

    就是利用一个类来完毕多种任务.不用每次都创建一个新类. 个人认为这个设计模式在C++里面,好像能够就使用一个函数取代,利用重复调用这个函数完毕任务和重复利用这个类,好像几乎相同. 只是既然是一个设计模 ...

  7. Design Pattern Adaptor 适配器设计模式

    适配器设计模式是为了要使用一个旧的接口,或许这个接口非常难用,或许是和新的更新的接口不兼容,所以须要设计一个适配器类,然后就能够让新旧的接口都统一. 就是这种一个图: watermark/2/text ...

  8. [Design Pattern With Go]设计模式-工厂模式

    这次介绍的设计模式是工厂模式,这是一个比较常见的创建型模式.一般情况下,工厂模式分为三种:简单工厂.工厂方法和抽象工厂,下面慢慢举例介绍下. 简单工厂 考虑一个加密程序的应用场景,一个加密程序可能提供 ...

  9. [Design Pattern With Go]设计模式-单例模式

    定义 一个类只允许创建一个对象(或者实例),那这个类就是一个单例类,这种设计模式就叫作单例模式.当某些数据只需要在系统中保留一份的时候,可以选择使用单例模式. 饿汉式 饿汉式的实现方式比较简单.在类加 ...

随机推荐

  1. TR069协议小结

        也称为CWMP,是在Internet网上通过wan口控制通信终端设备的协议.其协议流程如下图所示: 具体网上有很多资料.其主要的两个内容是:HTTP Client模型.DATA模型.      ...

  2. Android图片加载框架最全解析(七),实现带进度的Glide图片加载功能

    我们的Glide系列文章终于要进入收尾篇了.从我开始写这个系列的第一篇文章时,我就知道这会是一个很长的系列,只是没有想到竟然会写这么久. 在前面的六篇文章中,我们对Glide的方方面面都进行了学习,包 ...

  3. 怎样在centos安装python-mysql?

    在python中使用mysql,须要安装mysql-python依赖包, 能够通过pip来安装: pip install MySQL-python 假设错误发生,须要先安装一个开发包: yum ins ...

  4. Windows Server上iSCSI的Best Practices

    Installing and Configuring Microsoft iSCSI Initiator http://technet.microsoft.com/en-us/library/ee33 ...

  5. Chain of Responsibility 责任链模式 MD

    责任链模式 简介 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链,请求在这个链上[传递],直到链上的某一个对象决定处理此请求.发出这个请求的客户 ...

  6. android_orm框架之greenDAO(一)

    目录: 一.概述 二.下载并解压greenDAO相关资源 三.应用greenDAO框架 1.创建Java工程 2.添加类库支持 3.创建类 四.代码分析 五.使用greenDAO 六.源码下载 一.概 ...

  7. 自适应图片宽度的jQuery焦点幻灯轮播代码

    自适应图片宽度的jQuery焦点幻灯轮播代码 注意要1.7.2版本的jq才支持点击后显示点击的图片,不然就是一直顺序播放 演示   XML/HTML Code <div id="sli ...

  8. ListView 设置列对齐方式

    <ListView.Resources> <Style TargetType="ListViewItem"> <Setter Property=&qu ...

  9. SqlServer 在查询结果中如何过滤掉重复数据

    问题背景 在一个多表查询的sql中正常情况下产生的数据都是唯一的,但因为数据库中存在错误(某张表中存在相同的外键ID)导致我这边查询出来的数据就会有重复的问题 下面结果集中UserID:15834存在 ...

  10. const char * 转换为char*

    可以用const_cast     const char* aa = "this is a const string.";     char* bb = const_cast< ...