问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

C++使用桥接模式 实现点不同容量不同口味组合的奶茶

创作时间:
作者:
@小白创作中心

C++使用桥接模式 实现点不同容量不同口味组合的奶茶

引用
CSDN
1.
https://blog.csdn.net/m0_67469586/article/details/137235568

有个需求,点奶茶,奶茶容量:分为大,小杯。奶茶口味:可以添加牛奶,水果。
用桥接模式实现,可以点不同容量不同口味组合的奶茶,同时方便后期更换杯子容量和口味。

口味抽象类

class Taste  
{
public:  
    virtual void addsomething() = 0;  
};

子类 牛奶

class Milk : public Taste  
{
public:  
    virtual void addsomething() { cout << "牛奶" ; }  
};

子类 水果

class Fruit : public Taste  
{
public:  
    virtual void addsomething() { cout << "水果" ; }  
};

桥接类 大杯小杯抽象类

class Tea  
{
protected:  
    Taste* taste; //作为属性 给子类使用 private保护类型  
public:  
    Tea(Taste* tatste) :taste(tatste) {};//有参构造  
    virtual void orderTea(int count) = 0;  
};

子类 小杯

class smallTea : public Tea  
{
public:  
    smallTea(Taste* tatste) :Tea(tatste) {}  
    virtual void orderTea(int count)  
    {  
        cout << "小杯" << endl;  
        taste->addsomething();  
    }  
};

子类 大杯

class bigTea : public Tea  
{
public:  
    bigTea(Taste* tatste) :Tea(tatste) {}  
    virtual void orderTea(int count)  
    {  
        cout << "大杯" << endl;  
        taste->addsomething();  
    }  
};

测试代码

int main()  
{  
    Taste* taste1 = new Milk();  
    Taste* taste2 = new Fruit();  
    Tea* tea1 = new smallTea(taste1);  
    Tea* tea2 = new bigTea(taste2);  
    tea1->orderTea(1);  
    tea2->orderTea(1);  
    return 0;  
}

文章来源:CSDN

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号