桥设计模式事实上就是一个简单的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. blkblock工具1

    http://www.ibm.com/developerworks/cn/linux/l-cn-perf1/ http://blog.chinaunix.net/uid-24774106-id-409 ...

  2. WCF服务端调用client.

    wcf服务端 1,新建一个"windows窗口程序"名称为WCFServer2. 2.然后加入一个"WCF服务"名称为Service1. 详细步骤为:解决方式试 ...

  3. java.lang.ClassNotFoundException: com.mysql.jdbc.Driver解决方式

    昨天整理桌面的时候将桌面的一堆文件移动到F盘去了,结果导致原来建的一些项目名称所有出现红色感叹号,打开一看,原来是由于我把hibernate的那些jar包移走了.导致user library里那些ja ...

  4. 使用Bootstrap 3开发响应式网站实践02,轮播

    本篇体验图片轮播.html部分为: <div class="carousel slide" id="myCarousel" > <!--Ind ...

  5. SAE java应用读写文件(TmpFS和Storage)

    近期不少java用户都在提sae读写本地文件的问题,在这里结合TmpFS和Storage服务说说java应用应该如何读写文件TmpFS是一个供应用临时读写的路径,但请求过后将被销毁.出于安全考虑,sa ...

  6. android之获得当前连接wifi的名字

    WifiManager wifiMgr = (WifiManager) mActivity.getSystemService(Context.WIFI_SERVICE); int wifiState ...

  7. [Android Pro] AtomicInteger的用法

    J2SE 5.0提供了一组atomic class来帮助我们简化同步处理.基本工作原理是使用了同步synchronized的方法实现了对一个long, integer, 对象的增.减.赋值(更新)操作 ...

  8. 一文学会最常见的10种NLP处理技术

    一文学会最常见的10种NLP处理技术(附资源&代码)   技术小能手 2017-11-21 11:08:29 浏览2562 评论0 算法 HTTPS 序列 自然语言处理 神经网络 摘要: 自然 ...

  9. 硬件负载均衡F5和软负责均衡Nginx

    请直接搜索相关文章了解:http://www.ideadata.com.cn/wisdomAction/readWisdom.do?id=75   F5,硬件 优点:能够直接通过智能交换机实现,处理能 ...

  10. python各个模块循环引用问题解决办法

    当项目中的模块过多,或功能划分不够清晰时会出现循环引用的问题,如下 有两个模块moduleA 和 moduleB: #moduleA from moduleB import b def a(): pr ...