桥接模式-抽象与实现的分离
2010-03-27 21:38
399 查看
说到桥接模式,其最基本的目的就是要达到抽象部分与实现部分的相分离,使他们每一部分都能够独立的变化。然而,这句话还是不好理解的。套用大话设计模式的一句话,所谓的实现和抽象相分离,就是实现一个系统,有可能有多个角度对系统进行分类,而这其中的每一个角度都有可能发生变化,而桥接模式把这多个角度抽离出来实现,以便其独立的变化。就像手机一样,可以用牌子给他归类,也可以按不同的软件,如MP3给他归类,就像下面的例子代码,若要添加一个品牌,所需要做的就是从牌子的基类派生一个具体的子类来实现,若要添加一个软件的话,从软件基类派生一个子类来实现便可以了,而不会影响其他的类。手机软件和手机牌子是一个聚合关系。(实际上下面的游戏类也可以独立出一个类层次来)。
// tEST.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> using namespace std; //手机类的品牌的抽象接口,手机从品牌角度的一个分类 class CBrand { public: CBrand(){}; virtual ~CBrand(){}; virtual void Display() = 0; }; //M品牌手机的实现 class CMotoBrand:public CBrand { public: CMotoBrand(){}; virtual ~CMotoBrand(){}; virtual void Display(); }; void CMotoBrand::Display() { cout<<"Welcome to Moto"<<endl; } //N品牌的手机的实现 class CNokiaBrand:public CBrand { public: CNokiaBrand(){}; virtual ~CNokiaBrand(){}; virtual void Display(); }; void CNokiaBrand::Display() { cout<<"Welcome to Nokia"<<endl; } //手机的另一个角度的实现,手机软件的抽象类 class CSoftWare { public: CSoftWare(CBrand* cb):m_brand(cb){}; CSoftWare(){}; virtual ~CSoftWare(){}; virtual void Display() = 0; protected: CBrand* m_brand; }; //手机软件中的MP3功能的实现 class CMp3:public CSoftWare { public: CMp3(CBrand* cb):CSoftWare(cb){}; CMp3(){}; virtual ~CMp3(){}; virtual void Display(); }; void CMp3::Display() { m_brand->Display(); cout<<"Play MP3"<<endl; } //手机软件中的游戏功能的实现 class CGame:public CSoftWare { public: CGame(CBrand* cb):CSoftWare(cb){}; CGame(){}; virtual ~CGame(){}; virtual void Display(); }; void CGame::Display() { m_brand->Display(); cout<<"Play Game"<<endl; } int main() { //带MP3功能的M品牌手机 CBrand* brand = new CMotoBrand; CSoftWare* soft = new CMp3(brand); soft->Display(); delete brand; delete soft; //带游戏功能的N品牌手机 brand = new CNokiaBrand; soft = new CGame(brand); soft->Display(); delete brand; delete soft; int a = 0; cin>>a; return 0; }
相关文章推荐
- 桥接模式(Bridge)将抽象部分与它的实现部分分离,使它们都可以独立地变化。
- 桥接模式:将抽象部分与它的实现部分分离
- 手机软件统一 X 桥接模式 X 抽象与实现分离
- 桥接模式--将抽象和实现变化分离
- 18、桥接模式—抽象与实现分离。桥接模式和策略模式对比,桥接模式的个人完善
- JAVA设计模式-从抽象与实现说桥接模式
- 菜鸟版JAVA设计模式-从抽象与实现说桥接模式
- 菜鸟版JAVA设计模式-从抽象与实现说桥接模式
- 桥接(Bridge)模式----将类的功能层次结构与实现层次结构分离
- 设计模式之桥接模式+适配器模式Java实现
- PHP实现抽象工厂设计模式
- 桥接模式及C++实现
- 设计模式十一(桥接模式,python 语言实现)
- 设计模式与VB .net实现 桥接模式,单件模式
- [转] (CQRS)命令和查询责任分离架构模式(二) 之 Command的实现
- 设计模式C++实现--桥接模式
- Bridge 把一个抽象与其抽象操作的实现进行分离,这样,抽象与其抽象操作的实现可以独立进行改变
- 结构型模式之桥接模式实现
- 设计模式C++实现(10)——桥接模式
- Angular中在前后端分离模式下实现权限控制 - 基于RBAC【转】