设计模式--桥梁模式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)模式. ...
随机推荐
- 爬虫——请求库之selenium模块
阅读目录 一 介绍 二 安装 三 基本使用 四 选择器 五 等待元素被加载 六 元素交互操作 七 其他 八 项目练习 一 介绍 selenium最初是一个自动化测试工具,而爬虫中使用它主要是为了解 ...
- 在Windows下使用Dev-C++开发基于pthread.h的多线程程序【转】
在Windows下使用Dev-C++开发基于pthread.h的多线程程序[转] 在Windows下使用Dev-C++开发基于pthread.h的多线程程序 文章分类:C++编程 ...
- vue Element-ui 表格自带筛选框自定义高度
el-table中可以在一行的某列进行筛选,代码如下: <el-table-column prop="classOfTest" class="test" ...
- 字符串的partition函数
partition函数 str1='sdga2a34'aa=str1.partition('a') print(aa) """ ('sdg', 'a', '2a34') ...
- SpringCloud Config Server中{application}等占位符使用场景设置默认拉去分支
Spring Cloud Config服务器支持一个Git仓库URL,其中包含{application}和{profile}(以及{label})的占位符. 1.各个占位符所代表的含义 applica ...
- Mac下 Visual VM 无法检测到本地的Java进程
我下载的是VisualVM1.4 下载完成之后,在左边栏Local哪里只有VisualVM自己的进程. 我本地启动的eclipse和intelliJ都没有检测到. 网上查阅后都是Window下的解决方 ...
- 安装java项目开发环境
搭建java 查看本机是否已有java 如果有,请卸载. 下载jdk 复制到服务器中 临时配置你在shell里面改,只是做了临时更改啊,一重启就没了 配置到系统的环境变量里 export JAVA_H ...
- NodeJS NPM HTTPS
npm config set registry http://registry.npmjs.org/
- LRU算法---缓存淘汰算法
计算机中的缓存大小是有限的,如果对所有数据都缓存,肯定是不现实的,所以需要有一种淘汰机制,用于将一些暂时没有用的数据给淘汰掉,以换入新鲜的数据进来,这样可以提高缓存的命中率,减少磁盘访问的次数. LR ...
- 好用的http client库CPP REST SDK
前言 C++中http client库本身就少,好用的就更少了,在了解微软开源的CPP REST SDK库之前,我知道的C++ http client库有libcurl(这个是C语言的),Qt的QNe ...