完善了 《大话设计模式》C++实现:23 命令模式(二)进阶版 中删除订单功能。
main.cpp
//松耦合方式2: 进阶版2 #include "ICommand.h" #include "BakeMuttonCmd.h" #include "BakeChickenWingCmd.h" #include "Waiter.h" void test2() { CBarbecuer* boy = new CBarbecuer(); ICommand* pBakeMuttonCmd = new CBakeMuttonCmd(boy); ICommand* pBakeMuttonCmd1 = new CBakeMuttonCmd(boy); ICommand* pBakeMuttonCmd2 = new CBakeMuttonCmd(boy); ICommand* pBakeChickenWingCmd = new CBakeChickenWingCmd(boy); ICommand* pBakeChickenWingCmd2 = new CBakeChickenWingCmd(boy); CStock* pMuttonStock = new CStock(1, 5); CStock* pChickenWingStock = new CStock(1, 6); CWaiter* girl = new CWaiter(pMuttonStock, pChickenWingStock); //开门营业,点餐 cout << "before order 羊肉串库存 = " << pMuttonStock->count() << endl; cout << "before order 鸡翅库存 = " << pChickenWingStock->count() << endl; girl->order(pBakeMuttonCmd); girl->order(pBakeMuttonCmd1); girl->order(pBakeMuttonCmd2); girl->order(pBakeChickenWingCmd); girl->cancelOrder(pBakeMuttonCmd1);//删除订单还有点问题,先屏蔽 girl->cancelOrder(pBakeMuttonCmd2);//删除订单还有点问题,先屏蔽 girl->order(pBakeChickenWingCmd2); //通知 girl->notify(); cout << "after order 羊肉串库存 = " << pMuttonStock->count() << endl; cout << "after order 鸡翅库存 = " << pChickenWingStock->count() << endl; //析构 delete boy; delete pBakeMuttonCmd; delete pBakeMuttonCmd1; delete pBakeMuttonCmd2; delete pBakeChickenWingCmd; delete pMuttonStock; delete pChickenWingStock; delete girl; boy = nullptr; pBakeMuttonCmd = nullptr; pBakeMuttonCmd1 = nullptr; pBakeMuttonCmd2 = nullptr; pBakeChickenWingCmd = nullptr; pMuttonStock = nullptr; pChickenWingStock = nullptr; girl = nullptr; boy = nullptr; } int main() { test2(); system("pause"); return 0; }新增库存类,记录每种菜品的剩余库存
#pragma once /* 库存类 */ class CStock { public: CStock() :n(0), price(0.0) {} ~CStock() {} CStock(const int& _n, const double& _price) : n(_n), price(_price) {} int count() { return n; } double getPrice() { return price; } void setCount(const int& _n) { n = _n; } void setPrice(const double& _prince) { price = _prince; } protected: int n; double price; };同 《大话设计模式》C++实现:23 命令模式(二)进阶版 的 2.2.2 Barbecuer.h
同 《大话设计模式》C++实现:23 命令模式(二)进阶版 的 2.2.3 ICommand.h
同 《大话设计模式》C++实现:23 命令模式(二)进阶版 的 2.2.4 BakeMuttonCmd.h
同 《大话设计模式》C++实现:23 命令模式(二)进阶版 的 2.2.5 BakeChickenWingCmd.h
命令模式相关链接: 《大话设计模式》C++实现:23 命令模式(一)基础版 《大话设计模式》C++实现:23 命令模式(二)进阶版 《大话设计模式》C++实现:23 命令模式(三)抽象总结