设计模式--桥梁模式C++实现
1定义
将抽象和实现解耦,使得两者可以独立变化
2类图

3实现
#pragma once
#include<iostream>
using namespace std; class Implementor
{
protected:
Implementor(){}
public:
virtual ~Implementor() = {} virtual void doSomething() = ;
virtual void doAnything() = ;
}; class ConcreteImplementor1 :public Implementor
{
public:
void doSomething()
{
cout << "1doSomething();" << endl;
}
void doAnything()
{
cout << "1doAnything();" << endl;
}
};
class ConcreteImplementor2 :public Implementor
{
public:
void doSomething()
{
cout << "2doSomething();" << endl;
}
void doAnything()
{
cout << "2doAnything();" << endl;
}
}; class Abstraction
{
private:
Implementor *_imp;
public:
Abstraction(Implementor * imp)
:_imp(imp)
{} virtual void request()
{
_imp->doSomething();
}
Implementor* getImp()
{
return _imp;
}
}; class RefinedAbstraction :public Abstraction
{
public:
RefinedAbstraction(Implementor* imp)
:Abstraction(imp)
{} void request()
{
Abstraction::request();
Abstraction::getImp()->doAnything();
}
}; class Client
{
public:
void operator()()
{
Implementor* imp = new ConcreteImplementor1();
Abstraction* abs = new RefinedAbstraction(imp);
abs->request();
}
};
4应用
①优点
抽象和实现分离
完全为了解决集成的缺点而提出的设计模式////抽象与实现的关系本来是纵向的,桥梁模式将他们改为横向关系
优秀的扩充能力
实现细节对客户透明
5使用场景
不希望或者不适合通过继承的场景
接口或者抽象类不稳定
重要性要求较高的场景
6注意事项
使用桥梁模式重点在于如何拆分抽象和实现,并不是以设计继承就考虑使他,桥梁的意图是对变化进行封装
设计模式--桥梁模式C++实现的更多相关文章
- Java设计模式—桥梁模式
终于又碰到了一个简单点的模式了. 桥梁模式也叫做桥接模式,定义如下: 将抽象和实现解耦,使得两者可以独立地变化. 这句话也太难理解了,桥梁模式是为了解决类继承的缺点而设计 ...
- 说说设计模式~桥梁模式(Bridge)
返回目录 在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度? ...
- 24种设计模式--桥梁模式【Bridge Pattern】
今天我要说说我自己,梦想中的我自己,我身价过亿,有两个大公司,一个是房地产公司,一个是服装制造业,这两个公司都很赚钱,天天帮我在累加财富,其实是什么公司我倒是不关心,我关心的是是不是在赚钱,赚了多少, ...
- JavaScript设计模式--桥梁模式--引入
1.使用情况 (1)事件的监控 #1,利用页面的button来选择宠物的例子(思路) button.addEvent(element,"click",getPetByBame); ...
- 设计模式 桥梁模式 JDBC
桥梁模式是对象的结构模式.又称为柄体(Handle and Body)模式或接口(Interface)模式.桥梁模式的用意是“将抽象化(Abstraction)与实现化(Implementation) ...
- JavaScript设计模式--桥梁模式--XHR连接队列
针对该模式的例子现在不是很理解,写下来慢慢熟悉. 们要构建一个队列,队列里存放了很多ajax请求,使用队列(queue)主要是因为要确保先加入的请求先被处理.任何时候,我们可以暂停请求.删除请求.重试 ...
- 桥接模式 桥梁模式 bridge 结构型 设计模式(十二)
桥接模式Bridge Bridge 意为桥梁,桥接模式的作用就像桥梁一样,用于把两件事物连接起来 意图 将抽象部分与他的实现部分进行分离,使得他们都可以独立的发展. 意图解析 依赖倒置原 ...
- java设计模式之桥梁模式(Bridge)
1.桥梁模式 与 策略模式 非常相似 (其实很多设计模式都相似,因为所有的模式都是按照设计原则 而设计出来的,设计原则就相当于武功的心法,设计模式就是招式,只要心法过硬,就可以无招胜有招了.) 这里也 ...
- JAVA设计模式之桥梁模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述桥梁(Bridge)模式的: 桥梁模式是对象的结构模式.又称为柄体(Handle and Body)模式或接口(Interface)模式. ...
随机推荐
- PAT 1041 Be Unique[简单]
1041 Be Unique (20 分) Being unique is so important to people on Mars that even their lottery is desi ...
- NHibernate和Castle调试过程中,如何输出SQL的问题
首先,我在此需要强调的是,不管是Castle或者NHibernate输出SQL,都应该是属于NHibernate的技术,Castle的本身也是基于NHibernate开发的ORM框架 ...
- nginx在asp.net mvc项目中 配置 初步快速入门
nginx 官方下载地址 http://nginx.org/en/download.html 一般.net项目要运行在IIS环境下,自然选择windows版下载 我这里下载了nginx/Windows ...
- C#小票打印机动态纸张尺寸
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- TOSCA自动化测试工具--openURL
在folder下面create test case 输入自己的url,actionMode 是input, String类型
- redis安全设置
1. 设置监听ip为本地和内网ip bind 127.0.0.1 192.168.1.99 ## 可以是多个ip,用空格分割 2. 设置监听端口 port 16379 3. 设置密码 在配置文件中加入 ...
- linux在文件中包含某个关键词的指定行插入内容
1. 在包含某个关键字的行上面插入一行文字 sed -i '/wangzai/i\doubi' 1.txt 把内容doubi插入到包含wangzai关键字的上一行 2. 在包含某个关键字的行下面插入一 ...
- Windows MFC控件消息编程
1. Progress Bar Control Messages PBM_DELTAPOS PBM_GETPOS PBM_GETRANGE PBM_SETBARCOLOR ...
- iOS开发之NSUserDefaults
在ios中偏好设置保存用户配置的对象 //NSUserDefaults读取 //获取标准函数对象 //通过对象获取名称下NSMutableDictionary数据 NSUserDefaults *de ...
- 【vim】几种模式的切换
很多初学者启动vim后,不知道怎么输入字符:按了半天字母,结果屏幕还是空的. vim和记事本或WORD不一样,不是一打开后就可以输入文字,此时它处于正常模式. vim一共有4个模式: 正常模式 (No ...