结构型模式一之Bridge
来源:互联网 发布:java 处理换行符 编辑:程序博客网 时间:2024/06/05 21:03
1. UML
2. 意图:将抽星部分与它的实现部分分离,使得它们可以独立的变化;使用组合(委托)的方式将抽象和实现彻底地解耦,这样的好处是抽象和实现可以分别独立地变化,系统的耦合性也得到了很好的降低。
3. code
Abstraction.h
//Abstraction.h#ifndef _ABSTRACTION_H_#define _ABSTRACTION_H_class AbstractionImp;class Abstraction{public:virtual ~Abstraction();virtual void Operation() = 0;protected:Abstraction();};class RefinedAbstraction:public Abstraction{public:RefinedAbstraction(AbstractionImp* imp);~RefinedAbstraction();void Operation();private:AbstractionImp* _imp;};#endif //~_ABSTRACTION_H_
Abstraction.cpp
//Abstraction.cpp#include "Abstraction.h"#include "AbstractionImp.h"#include <iostream>using namespace std;Abstraction::Abstraction(){}Abstraction::~Abstraction(){}RefinedAbstraction::RefinedAbstraction(AbstractionImp* imp){_imp = imp;}RefinedAbstraction::~RefinedAbstraction(){}void RefinedAbstraction::Operation(){_imp->Operation();}
AbstractionImp.h
//AbstractionImp.h#ifndef _ABSTRACTIONIMP_H_#define _ABSTRACTIONIMP_H_class AbstractionImp{public:virtual ~AbstractionImp();virtual void Operation() = 0;protected:AbstractionImp();private:};class ConcreteAbstractionImpA:public AbstractionImp{public:ConcreteAbstractionImpA();~ConcreteAbstractionImpA();virtual void Operation();protected:private:};class ConcreteAbstractionImpB:public AbstractionImp{public:ConcreteAbstractionImpB();~ConcreteAbstractionImpB();virtual void Operation();protected:private:};#endif //~_ABSTRACTIONIMP_H_
AbstractionImp.cpp
//AbstractionImp.cpp#include "AbstractionImp.h"#include <iostream>using namespace std;AbstractionImp::AbstractionImp(){}AbstractionImp::~AbstractionImp(){}void AbstractionImp::Operation(){cout<<"AbstractionImp....imp..."<<endl;}ConcreteAbstractionImpA::ConcreteAbstractionImpA(){}ConcreteAbstractionImpA::~ConcreteAbstractionImpA(){}void ConcreteAbstractionImpA::Operation(){cout<<"ConcreteAbstractionImpA...."<<endl;}ConcreteAbstractionImpB::ConcreteAbstractionImpB(){}ConcreteAbstractionImpB::~ConcreteAbstractionImpB(){}void ConcreteAbstractionImpB::Operation(){cout<<"ConcreteAbstractionImpB...."<<endl;}
main.cpp
//main.cpp#include "Abstraction.h"#include "AbstractionImp.h"#include <iostream>using namespace std;int main(int argc,char* argv[]){AbstractionImp* imp = new ConcreteAbstractionImpA();Abstraction* abs = new RefinedAbstraction(imp);abs->Operation();delete imp;delete abs;return 0;}
4. output
- 结构型模式一之Bridge
- 设计模式之结构型模式(一)-----桥接(bridge)模式
- 结构型模式之Bridge模式
- 结构模式之Bridge
- 结构模式之Bridge
- 结构型模式之二--- Bridge
- 结构型模式之桥接BRIDGE
- 【设计模式攻略】结构型模式之Bridge模式
- bridge模式-结构型模式
- 设计模式笔记--结构型模式之二--桥接 Bridge
- 桥接(bridge) 模式--结构型模式之五
- 结构型模式之桥模式(Bridge)
- 结构型模式之桥接模式(Bridge)
- 设计模式(结构型)之桥接模式(Bridge Pattern)
- 【设计模式】结构型模式之桥接Bridge
- 结构型模式之桥接模式(Bridge)
- 译-设计模式-结构模式之Bridge
- Bridge桥接(结构型模式)
- 修改Linux的HostName
- LINUX内核学习书籍推荐
- jquery实现登录验证
- OCP-1Z0-053-V13.02-490题
- 绘图类的使用
- 结构型模式一之Bridge
- 中断(interrupt)、异常(exception)、陷入(trap)
- 23个.NET开源项目(转)
- 表增加列并给与默认值
- JTAG各类接口针脚定义及含义
- 读取数据(Mysql)
- 文件操作相关说明
- ARM交叉编译的安装
- 软工三种流程图表示