设计模式学习小结(2.2)——桥接模式
2013-12-27 11:36
531 查看
作用:
应对当前多种多样的操作系统,程序可能需要多套接口,并随时有可能新增接口。将逻辑和实现分离,使程序可以十分方便的扩展。
示例代码:
Logic.h
Logic.cpp
Realize.h
Realize.cpp
cilent.cpp
如果要新增安卓系统的接口,只需新增一个AbstractRealize类的派生类即可。
应对当前多种多样的操作系统,程序可能需要多套接口,并随时有可能新增接口。将逻辑和实现分离,使程序可以十分方便的扩展。
示例代码:
Logic.h
#ifndef _LOGIC_H_ #define _LOGIC_H_ /***************************************************************************** * 稳定的对外接口 * 如果需要新增实现 * 只需增加新增一个AbstractRealize类的实例即可 *****************************************************************************/ class AbstractRealize; class Logic { public: Logic(AbstractRealize* realize); ~Logic(void); void Operation(); private: AbstractRealize* m_realize; }; #endif
Logic.cpp
#include "Logic.h" #include "Realize.h" Logic::Logic( AbstractRealize* realize ) { m_realize = realize; } Logic::~Logic(void) { if (NULL != m_realize) { delete m_realize; } } void Logic::Operation() { m_realize->Operation(); }
Realize.h
#ifndef _REALIZE_H_ #define _REALIZE_H_ #include <iostream> using namespace std; /***************************************************************************** * 对应各系统的具体实现 *****************************************************************************/ class AbstractRealize { public: virtual ~AbstractRealize(); virtual void Operation() = 0; protected: AbstractRealize(); }; class RealizeWinXP : public AbstractRealize { public: RealizeWinXP(void); ~RealizeWinXP(void); void Operation(); }; class RealizeLinux : public AbstractRealize { public: RealizeLinux(void); ~RealizeLinux(void); void Operation(); }; #endif
Realize.cpp
#include "Realize.h" AbstractRealize::AbstractRealize() { } AbstractRealize::~AbstractRealize() { } RealizeWinXP::RealizeWinXP( void ) { } RealizeWinXP::~RealizeWinXP( void ) { } void RealizeWinXP::Operation() { cout<<"Windows XP Operation"<<endl; } RealizeLinux::RealizeLinux( void ) { } RealizeLinux::~RealizeLinux( void ) { } void RealizeLinux::Operation() { cout<<"Linux Operation"<<endl; }
cilent.cpp
#include "Logic.h" #include "Realize.h" #include <iostream> void main() { AbstractRealize* realizeXP = new RealizeWinXP(); AbstractRealize* realizeLinux = new RealizeLinux(); Logic* l1 = new Logic(realizeXP); l1->Operation(); Logic* l2 = new Logic(realizeLinux); l2->Operation(); delete l1; delete l2; system("pause"); }
如果要新增安卓系统的接口,只需新增一个AbstractRealize类的派生类即可。
相关文章推荐
- 设计模式学习笔记(四)—Bridge桥接模式
- C#设计模式学习小结之四 状态模式
- 设计模式学习总结-桥接模式(Bridge Pattern)
- php设计模式学习系列(九)--桥接模式
- C#设计模式学习小结之九 原型模式
- 设计模式深入学习---Bridge桥接模式(结构型模式)
- 设计模式学习总结(12) 桥接模式
- IOS设计模式学习(9)桥接
- 跟着ZHONGHuan学习设计模式--桥接模式
- 设计模式之结构型模式―― 2.2 桥接模式
- 设计模式学习笔记(八)——Bridge桥接模式
- 【设计模式学习笔记八】【结构型模式】【桥接模式(Bridge)】
- 十八、桥接模式——设计模式学习笔记
- java/android 设计模式学习笔记(8)---桥接模式
- 设计模式学习笔记-桥接模式
- 设计模式学习小结(1.1)——工厂模式
- 设计模式学习笔记二十三:今天学什么 - 桥接模式
- 设计模式学习--桥接模式
- 设计模式学习笔记--桥接模式
- C#面向对象设计模式学习笔记(7) - Bridge 桥接模式(结构型模式)