设计模式--桥接模式

    桥接模式属于结构型模式
    基本原理:链接两个不同的独立变化的维度。将实现类与抽象类变成两个独立的维度。
    主要流程:
            1.创建一个维度A
            2.创建另一个维度B,并让之前的维度A成为本维度B的一个成员
            3.在使用时创建维度B,并对维度B的成员维度A进行赋值
    注意:抽象类依赖实现类

#include <iostream>
#include <string>
using namespace std;

//创建实现类
class DrawApi
{
public:
    virtual void drawCircle(int radius, int x, int y) = 0;
};
class RedCircle:public DrawApi
{
public:
    void drawCircle(int radius, int x, int y)
    {
        cout<<"Drawing Circle[ color: red,  radius:"<< radius <<",  x:" <<x<<",  y:"<< y <<"]"<<endl;
    }
};
class GreenCircle:public DrawApi
{
public:
    void drawCircle(int radius, int x, int y)
    {
        cout<<"Drawing Circle[ color: red,  radius:"<< radius <<",  x:" <<x<<",  y:"<< y <<"]"<<endl;
    }
};

//创建抽象类
class Shape
{
protected:
    DrawApi *drawApi;
    Shape(DrawApi *drawApi)
    {
        this->drawApi = drawApi;
    }
public:
    virtual void draw() = 0;
};

class Circle:public Shape
{
private:
    int x,y,radius;
public:
    Circle(int radius, int x, int y, DrawApi *drawApi):Shape(drawApi)
    {
        this->x = x;
        this->y = y;
        this->radius = radius;
    }
    void draw()
    {
        //抽象类依靠实现类
        drawApi->drawCircle(radius,x,y);
    }
};


int main()
{
    Shape * redCircle = new Circle(150,50,50,new RedCircle());
    Shape * greenCircle = new Circle(200,60,60,new GreenCircle());
    redCircle->draw();
    greenCircle->draw();
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值