#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辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 一、命令模式的概念 命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transactio...
- 设计模式之命令模式-使用命令模式实现遥控器及总结 先来看看项目结构: 说明: 1:命令接口对象 2:电灯打开或关闭...