C++设计模式之 -- 桥接模式 (Bridge)
来源:互联网 发布:c语言代码在线测试 编辑:程序博客网 时间:2024/06/13 21:20
定义
桥接模式(Bridge Pattern) 是指将抽象部分与它的实现部分分离,使它们都可以独立的变化。
例如:
我们要实现一个对象,用来序列化数据,将数据序列化到磁盘上可能有多重方式,json 格式, XML 格式或者database 等。使用桥接模式,将具体的序列化实现部分分离开来,使得抽象和实现的部分可以独立的变化,增强了代码的扩展性。
类图
一个典型的桥接模式的类图如下所示:
代码示例
BridgePattern.h
#pragma onceclass Implementor{public:virtual void OperationImplemention() = 0;};class Abstraction{public:Abstraction(Implementor* pImp);virtual ~Abstraction();public:virtual void Operation() = 0;protected:Implementor* GetImplementor() { return m_pImplementor; }private:Implementor* m_pImplementor;};class CRefinedAbstraction : public Abstraction {public:CRefinedAbstraction(Implementor* pImp);virtual ~CRefinedAbstraction();virtual void Operation();};class CConcreateImplementorA : public Implementor{public:virtual void OperationImplemention();};class CConcreateImplementorB : public Implementor{public:virtual void OperationImplemention();};
BridgePattern.cpp
#include "BridgePattern.h"#include <iostream>//--------- Abstraction ---------------Abstraction::Abstraction(Implementor* pImp) : m_pImplementor(pImp){}Abstraction::~Abstraction(){if (m_pImplementor) {delete m_pImplementor;m_pImplementor = 0;}}//---------- CRefeinedAbstraction ----------------CRefinedAbstraction::CRefinedAbstraction(Implementor* pImp): Abstraction(pImp){}CRefinedAbstraction::~CRefinedAbstraction(){}void CRefinedAbstraction::Operation(){if (GetImplementor()){GetImplementor()->OperationImplemention();}}//------------- CConcreateImplementor ----------void CConcreateImplementorA::OperationImplemention(){std::cout << "CConcreateImplementorA operation ! " << std::endl;}void CConcreateImplementorB::OperationImplemention(){std::cout << "CConcreateImplementorB operation ! " << std::endl;}
Client
<span style="white-space:pre"></span>{Abstraction* pAbstraction = new CRefinedAbstraction(new CConcreateImplementorA());pAbstraction->Operation();}{Abstraction* pAbstraction = new CRefinedAbstraction(new CConcreateImplementorB());pAbstraction->Operation();}
0 0
- 设计模式之 Bridge 模式(桥接模式)
- 设计模式之-Bridge-- 桥接模式
- 设计模式之Bridge(桥接模式)
- 设计模式之Bridge(桥接模式)
- 设计模式之桥接模式(Bridge)
- 设计模式之桥接模式-bridge
- 设计模式之桥接模式(Bridge)
- 设计模式之桥接模式(Bridge)
- 设计模式之桥接模式(Bridge)
- 设计模式之Bridge(桥模式)
- 设计模式-桥接模式(Bridge Pattern)
- C++设计模式之 -- 桥接模式 (Bridge)
- 设计模式之(七)--桥接模式(bridge)
- 设计模式之(十) Bridge(桥接模式)
- 设计模式之桥接(Bridge)---对象结构性模式
- 设计模式(七)之Bridge - 桥接模式
- 23种设计模式之桥接模式(Bridge)
- .Net设计模式之桥接模式(Bridge )
- 暑假集训第二周——贪心 盒子平移
- 二分查找
- Ubuntu14安装mysql命令
- DXP设计PCB技巧
- codeforces 549H Degenerate Matrix(二分)
- C++设计模式之 -- 桥接模式 (Bridge)
- HDOJ 2030 汉字统计(借此题来谈谈ASCII码与汉字机内码)
- 关于java基础--面向对象的特性
- 2015 Multi-University Training Contest 1 Hdu5288 OO’s Sequence
- Record-2-6
- poj 2366 Sacrament of the sum
- R cannot be resolved to a variable的原因
- Node.js Express连接mysql完整的登陆注册系统(windows)
- Record-2-7