一、源代码
#include<iostream>
#include<memory>
#include<vector>
using namespace std;
class Order
{
public:
virtual void execute() = 0;
virtual ~Order() = default;
};
class Stock
{
public:
Stock()
{
_name = "ABC";
_quantity = 10;
}
void buy()
{
cout<<"Stock [Name: "<<_name<<",Quantity: "<<_quantity<<"] bought"<<endl;
}
void sell()
{
cout<<"Stock [Name: "<<_name<<",Quantity: "<<_quantity<<"] sold"<<endl;
}
private:
string _name;
int _quantity;
};
class BuyStock:public Order
{
public:
BuyStock(shared_ptr<Stock> abcStock)
{
this->_abcStock = abcStock;
}
virtual void execute() override
{
_abcStock->buy();
}
private:
shared_ptr<Stock> _abcStock;
};
class SellStock:public Order
{
public:
SellStock(shared_ptr<Stock> abcStock)
{
this->_abcStock = abcStock;
}
virtual void execute() override
{
_abcStock->sell();
}
private:
shared_ptr<Stock> _abcStock;
};
class Broker
{
public:
void takeOrder(shared_ptr<Order> order)
{
_orderVector.push_back(order);
}
void placeOrder()
{
for(const auto& order:_orderVector)
{
order->execute();
}
_orderVector.clear();
}
private:
vector<shared_ptr<Order>> _orderVector = {};
};
int main()
{
shared_ptr<Stock> abcStock= make_shared<Stock>();
shared_ptr<Order> buyStockOrder = make_shared<BuyStock>(abcStock);
shared_ptr<Order> sellStockOrder = make_shared<SellStock>(abcStock);
shared_ptr<Broker> broker= make_shared<Broker>();
broker->takeOrder(buyStockOrder);
broker->takeOrder(sellStockOrder);
broker->placeOrder();
}
二、运行结果

本文介绍了一种使用命令模式实现股票买卖操作的设计模式。通过创建BuyStock和SellStock类继承自Order基类,实现了股票的买入和卖出操作。Broker类负责接收和执行这些订单,展示了一个典型的命令模式应用。
1770

被折叠的 条评论
为什么被折叠?



