2019-10-23 14:19:36 +00:00
|
|
|
#ifndef __BRIDGE_PATTERN_H__
|
|
|
|
#define __BRIDGE_PATTERN_H__
|
|
|
|
|
|
|
|
#include <iostream>
|
|
|
|
#include <string.h>
|
|
|
|
#include <mutex>
|
|
|
|
using namespace std;
|
|
|
|
|
2021-10-28 13:58:09 +00:00
|
|
|
// 实现类接口Implementor
|
2019-10-23 14:19:36 +00:00
|
|
|
class Game
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
Game(){}
|
2021-04-04 13:09:08 +00:00
|
|
|
virtual ~Game(){}
|
2019-10-23 14:19:36 +00:00
|
|
|
virtual void play() = 0;
|
|
|
|
private:
|
|
|
|
};
|
|
|
|
|
2021-10-28 13:58:09 +00:00
|
|
|
// 具体实现类GameA
|
2019-10-23 14:19:36 +00:00
|
|
|
class GameA:public Game
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
GameA(){}
|
|
|
|
void play(){
|
2021-10-29 13:33:26 +00:00
|
|
|
printf("Jungle玩游戏A\n");
|
2019-10-23 14:19:36 +00:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2021-10-28 13:58:09 +00:00
|
|
|
// 具体实现类GameB
|
2019-10-23 14:19:36 +00:00
|
|
|
class GameB :public Game
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
GameB(){}
|
|
|
|
void play(){
|
2021-10-29 13:33:26 +00:00
|
|
|
printf("Jungle玩游戏B\n");
|
2019-10-23 14:19:36 +00:00
|
|
|
}
|
|
|
|
};
|
|
|
|
|
2021-10-28 13:58:09 +00:00
|
|
|
//抽象类Phone
|
2019-10-23 14:19:36 +00:00
|
|
|
class Phone
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
Phone(){
|
|
|
|
}
|
2021-04-04 13:09:08 +00:00
|
|
|
virtual ~Phone(){}
|
2021-10-28 13:58:09 +00:00
|
|
|
// Setup game
|
2019-10-23 14:19:36 +00:00
|
|
|
virtual void setupGame(Game *igame) = 0;
|
|
|
|
virtual void play() = 0;
|
|
|
|
private:
|
|
|
|
Game *game;
|
|
|
|
};
|
|
|
|
|
2021-10-28 13:58:09 +00:00
|
|
|
// 扩充抽象类PhoneA
|
2019-10-23 14:19:36 +00:00
|
|
|
class PhoneA:public Phone
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
PhoneA(){
|
|
|
|
}
|
2021-10-28 13:58:09 +00:00
|
|
|
// Setup game
|
2019-10-23 14:19:36 +00:00
|
|
|
void setupGame(Game *igame){
|
|
|
|
this->game = igame;
|
|
|
|
}
|
|
|
|
void play(){
|
|
|
|
this->game->play();
|
|
|
|
}
|
|
|
|
private:
|
|
|
|
Game *game;
|
|
|
|
};
|
|
|
|
|
2021-10-28 13:58:09 +00:00
|
|
|
// 扩充抽象类PhoneB
|
2019-10-23 14:19:36 +00:00
|
|
|
class PhoneB :public Phone
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
PhoneB(){
|
|
|
|
}
|
2021-10-28 13:58:09 +00:00
|
|
|
// Setup game
|
2019-10-23 14:19:36 +00:00
|
|
|
void setupGame(Game *igame){
|
|
|
|
this->game = igame;
|
|
|
|
}
|
|
|
|
void play(){
|
|
|
|
this->game->play();
|
|
|
|
}
|
|
|
|
private:
|
|
|
|
Game *game;
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
#endif //__BRIDGE_PATTERN_H__
|