设计模式之命令模式

#include<iostream>
#include<list>
#include<string>
//具体股票
class Stock {
    //股票名字
    std::string name = "ABC";
    //股票单次量
    int quantity = 10;
public:
    void Buy() {
        std::cout << "buy stock is " << name << " quantity is :" << quantity << "\n";
    }
    void Sell() {
        std::cout << "sell stock is " << name << " quantity is :" << quantity << "\n";
    }
};

//具体命令基类
class Order {
public:
    virtual void execute() = 0;
};

//买股票
class BuyStock :public Order {
    Stock* stock;
public:
    //记录具体股票
    BuyStock(Stock * sck) {
        stock = sck;
    }
    void execute() override {
        stock->Buy();
    }
};

//卖股票
class SellStock :public Order {
    Stock* stock;
public:
    //记录具体股票
    SellStock(Stock* sck) {
        stock = sck;
    }
    void execute() override {
        stock->Sell();
    }
};


//经纪人
class Broker {
    std::list<Order*>orders;
public:

    //加入购物车
    void TakeOrders(Order * odr) {
        orders.push_back(odr);
    }

    
    void PlaceOrders(){
        //买入
        for (auto&& odr : orders) {
            odr->execute();
        }
        //清空购物车
        orders.clear();
    }
};
int main()
{
    //商品
    Stock* stock = new Stock();
    //具体请求
    Order* buyStock = new BuyStock(stock);
    Order* sellStock = new SellStock(stock);
    //经纪人
    Broker* broker = new Broker();
    
    
    broker->TakeOrders(buyStock);
    broker->PlaceOrders();
    
    
    broker->TakeOrders(sellStock);
    broker->PlaceOrders();


    system("pause");
    return 0;

}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容