C++ Bridge 设计模式
2011-03-06 21:30
288 查看
C++ Bridge 设计模式
Bridge模式是应用最广泛也是我个人比较喜欢的一个C++设计模式之一。
Bridge模式意图:降低抽象和实现之间的耦合。
面向对象系统设计和分析中最重要的一点就是:高内聚,低耦合。Bridge模式使得抽象和实现能够相对独立。
Bridge模式结构图:
Bridge模式的关键在于Abstraction的派生类中维护了一个纸箱Implementor类的指针。
让Implentor的派生类来去实现。从而实现了抽象和实现的相对独立。
参考代码:
我个人 非常欣赏也非常推崇Bridge模式。
Bridge模式是应用最广泛也是我个人比较喜欢的一个C++设计模式之一。
Bridge模式意图:降低抽象和实现之间的耦合。
面向对象系统设计和分析中最重要的一点就是:高内聚,低耦合。Bridge模式使得抽象和实现能够相对独立。
Bridge模式结构图:
Bridge模式的关键在于Abstraction的派生类中维护了一个纸箱Implementor类的指针。
让Implentor的派生类来去实现。从而实现了抽象和实现的相对独立。
参考代码:
#pragma once //Abstraction.h class Abstraction { public: Abstraction(void){}; virtual ~Abstraction(void){}; virtual void Operation() = 0; };
#pragma once //Implementor.h class Implementor { public: Implementor(void){}; virtual ~Implementor(void){}; virtual void OperationImp() = 0; };
#pragma once //ConcreteImplementorA.h #include "implementor.h" class ConcreteImplementorA : public Implementor { public: ConcreteImplementorA(void); ~ConcreteImplementorA(void); void OperationImp(); };
#pragma once //ConcreteImplementorB.h #include "implementor.h" class ConcreteImplementorB : public Implementor { public: ConcreteImplementorB(void); ~ConcreteImplementorB(void); void OperationImp(); };
#pragma once //RefinedAbstraction.h #include "abstraction.h" #include "Implementor.h" class Implementor; class RefinedAbstraction : public Abstraction { public: RefinedAbstraction(void); RefinedAbstraction(Implementor *imp); ~RefinedAbstraction(void); void Operation(); private: Implementor *m_imp; };
#include <iostream> #include "ConcreteImplementorA.h" using namespace std; //ConcreteImplementonA.cpp ConcreteImplementorA::ConcreteImplementorA(void) { } ConcreteImplementorA::~ConcreteImplementorA(void) { } void ConcreteImplementorA::OperationImp() { cout << "Hi, I am in ConcreteImplementorA" << endl; }
#include <iostream> #include "ConcreteImplementorB.h" using namespace std; //ConcreteImplementorB.cpp ConcreteImplementorB::ConcreteImplementorB(void) { } ConcreteImplementorB::~ConcreteImplementorB(void) { } void ConcreteImplementorB::OperationImp() { cout << "Hi, I am in ConcreteImplementorB" << endl; }
#include <iostream> #include "RefinedAbstraction.h" using namespace std; //RefinedAbstraction.cpp RefinedAbstraction::RefinedAbstraction(void) { m_imp = NULL; } RefinedAbstraction::~RefinedAbstraction(void) { } RefinedAbstraction::RefinedAbstraction(Implementor *imp) { m_imp = imp; } void RefinedAbstraction::Operation() { m_imp->OperationImp(); }
#include "Abstraction.h" #include "ConcreteImplementorA.h" #include "ConcreteImplementorB.h" #include "RefinedAbstraction.h" //main.cpp int main() { ConcreteImplementorA *pImpA = new ConcreteImplementorA; ConcreteImplementorB *pImpB = new ConcreteImplementorB; Abstraction *objA = new RefinedAbstraction(pImpA); Abstraction *objB = new RefinedAbstraction(pImpB); objA->Operation(); objB->Operation(); }
我个人 非常欣赏也非常推崇Bridge模式。
相关文章推荐
- C++设计模式之十二--Bridge桥梁模式
- C++设计模式之桥接模式(Bridge)
- C++设计模式之 -- 桥接模式 (Bridge)
- 设计模式C++学习笔记之二(Bridge桥梁模式)
- 设计模式C++描述----09.桥接(Bridge)模式
- 我所理解的设计模式(C++实现)——桥模式(Bridge Pattern)
- 转载:C++设计模式之Bridge模式 http://www.cnblogs.com/chain2012/archive/2011/01/17/1937528.html
- c++ 设计模式之桥接模式(Bridge)
- 设计模式C++学习笔记之十一(Bridge桥梁模式)
- C++设计模式——Bridge模式
- c++ 设计模式7 (Bridge 桥模式)
- 设计模式C++学习笔记之十一(Bridge桥梁模式)
- 设计模式C++学习笔记之十一(Bridge桥梁模式)
- C++设计模式 之 “单一职责”模式:Decorator、Bridge
- 设计模式C++之十一(Bridge桥梁模式)
- 设计模式C++学习笔记之十一(Bridge桥梁模式)
- C++设计模式之Bridge模式
- C++设计模式-Bridge桥接模式
- C++设计模式之七:Bridge(桥接器)
- 设计模式C++学习笔记之十一(Bridge桥梁模式)