沭阳金地建设网站,网站开发培训要多少钱,设计网络品牌营销方案思路,帝国cms网站搬家桥接模式#xff1a; 将抽象部分和它的实现部分相分离开来#xff0c;以使它们可以单独地变化。
UML图#xff1a;
主要包括#xff1a;
Abstraction:定义了抽象部分的接口#xff0c;操作一个实现部分对象的引用。RefinedAbstraction:继承自抽象部分的类。Implemen…桥接模式 将抽象部分和它的实现部分相分离开来以使它们可以单独地变化。
UML图
主要包括
Abstraction:定义了抽象部分的接口操作一个实现部分对象的引用。RefinedAbstraction:继承自抽象部分的类。Implementor实现部分的接口。ConcreteImplementor实现了Implementor定义的接口的具体类。
C代码如下
#include iostreamusing namespace std;class Implementor
{public:virtual void operationImpl()0;
};class ConcreteImplementorA:public Implementor
{public:void operationImpl(){coutConcreteImplementorA::operationImplendl;}};class ConcreteImplementorB:public Implementor
{public:void operationImpl(){coutConcreteImplementorB::operationImplendl;}};class Abstraction
{public:virtual void operation()0;void setImplementor(Implementor * i){impli;}Implementor * getImplementor(){return impl;}protected:Implementor * impl;
};class RefinedAbstraction:public Abstraction
{public:void operation(){impl-operationImpl();}
};int main()
{cout桥接模式例子endl;Abstraction * abnew RefinedAbstraction();Implementor * cianew ConcreteImplementorA();ab-setImplementor(cia);ab-operation();Implementor * cibnew ConcreteImplementorB();ab-setImplementor(cib);ab-operation();delete cia;delete cib;delete ab;return 0;
}执行输出 下面是一个具体的例子看这个具体的例子可能好理解一些,摘自大话设计模式
Abstraction为Phone(手机)。RefinedAbstraction为Samsung(三星手机)Huawei(华为手机)。Implementor为Game(手机游戏)。ConcreteImplementor为NeedForSpeed(极品飞车)QQGame(QQ游戏)FruitNinjia(水果忍者)。
UML类图为
C代码
#include iostreamusing namespace std;class Game
{public:virtual void play()0;
};class NeedForSpeed :public Game
{public:virtual void play(){coutneed for speed playendl;}
};class QQGame :public Game
{public:virtual void play(){coutQQGame playendl;}
};class FruitNinjia:public Game
{public:virtual void play(){coutFruit Ninjia playendl;}
};class Phone
{public:virtual void run()0;void setGame(Game *g){ gameg;} Game * getGame(){return game;}protected:Game *game;
};class Samsung:public Phone
{public:virtual void run(){coutSamsung :;game-play();}
};class HuaWei:public Phone
{public:virtual void run(){coutHuaWei :;game-play();}};int main()
{cout桥接模式真实的例子不同的手机品牌和手机游戏endl;Phone *samsungnew Samsung();Phone *huaweinew HuaWei();Game * needForSpeednew NeedForSpeed();Game * qqGamenew QQGame();Game * fruitnew FruitNinjia();samsung-setGame(qqGame);samsung-run();huawei-setGame(needForSpeed);huawei-run();samsung-setGame(fruit);samsung-run();delete samsung;delete huawei;delete needForSpeed;delete qqGame;delete fruit;return 0;}执行输出