c++ 桥接模式


#include <iostream>

using namespace std;

class HandsetSoft
{
public:
virtual void run() = 0;
};

class HandsetGame:public HandsetSoft
{
public:
void run() override
{
cout<<"运行手机游戏"<<endl;
}
};

class HandsetAddresslist:public HandsetSoft
{
public:
void run() override
{
cout<<"运行手机通讯录"<<endl;
}
};

class HandsetBrand
{
public:
void setHandsetBrand(HandsetSoft* soft)
{
this->soft = soft;
}

virtual void run() = 0;

protected:
HandsetSoft* soft;
};

class HandsetBrandN:public HandsetBrand
{
public:
void run() override
{
soft->run();
}
};

class HandsetBrandM:public HandsetBrand
{
public:
void run() override
{
soft->run();
}
};

int main()
{
HandsetBrand* ab = new HandsetBrandN();
ab->setHandsetBrand(new HandsetGame());
ab->run();

ab->setHandsetBrand(new HandsetAddresslist());
ab->run();


system("pause");
return 0;
}


c++ 桥接模式 - 1307520486 - 1307520486的博客 转发至微博
 
c++ 桥接模式 - 1307520486 - 1307520486的博客 转发至微博
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++桥接模式是一种结构型设计模式,它将抽象部分与实现部分分离,使它们可以独立地变化。桥接模式通过将继承关系转化为关联关系,从而实现了解耦。 下面是一个具体的C++桥接模式实例: 假设我们有一个图形类 Shape,它有两个子类:Circle(圆)和Square(正方形)。我们还有一个颜色类 Color,它有两个子类:Red(红色)和Blue(蓝色)。我们希望能够在不修改图形类和颜色类的情况下,动态地组合它们。 首先,我们定义一个抽象类 Shape,其中包含一个指向颜色类的指针: ```cpp class Shape { protected: Color* color; public: virtual void draw() = 0; void setColor(Color* c) { color = c; } }; ``` 然后,我们定义两个具体的图形类 Circle 和 Square,它们都继承自 Shape 类,并实现 draw() 方法: ```cpp class Circle : public Shape { public: void draw() { cout << "Drawing a circle "; color->fill(); } }; class Square : public Shape { public: void draw() { cout << "Drawing a square "; color->fill(); } }; ``` 接下来,我们定义一个抽象类 Color,其中包含一个 fill() 方法: ```cpp class Color { public: virtual void fill() = 0; }; ``` 然后,我们定义两个具体的颜色类 Red 和 Blue,它们都继承自 Color 类,并实现 fill() 方法: ```cpp class Red : public Color { public: void fill() { cout << "with red color." << endl; } }; class Blue : public Color { public: void fill() { cout << "with blue color." << endl; } }; ``` 最后,我们可以使用桥接模式来动态地组合图形和颜色: ```cpp int main() { Shape* shape = new Circle(); Color* color = new Red(); shape->setColor(color); shape->draw(); delete shape; delete color; return 0; } ``` 运行上述代码,输出结果为: ``` Drawing a circle with red color. ``` 这个例子中,我们可以通过设置不同的颜色对象来改变图形的填充颜色,而不需要修改图形类的代码。这就是桥接模式的优势所在。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值