-
说明
-
案例
-
接上回
- 鞋贩子摆摊发财了。规模变大。租了两层楼来卖鞋。
- 一层楼卖拖鞋,一层楼卖运动鞋。
- 鞋子则按照很多进行分类。
- 拖鞋有:沙滩拖鞋,人字拖等。
- 运动鞋有:跑步鞋,篮球鞋,足球鞋等。
-
代码
#include<iostream> #include<string> class XieZi { public: virtual void ShaXie() = 0; }; class ShaShaHai : public XieZi { public: void ShaXie() override { std::cout << "sha tan hai!" << std::endl; } }; class RenZiTuo : public XieZi { public: void ShaXie() override { std::cout << "ren zi tuo!" << std::endl; } }; class ZaPai : public XieZi { public: void ShaXie() override { std::cout << "bu xiao de!" << std::endl; } }; class PaoBuHai : public XieZi { public: void ShaXie() override { std::cout << "pao bu hai!" << std::endl; } }; class LanQiuHai : public XieZi { public: void ShaXie() override { std::cout << "lan qiu hai!" << std::endl; } }; class ZuQiuHai : public XieZi { public: void ShaXie() override { std::cout << "zu qiu hai!" << std::endl; } }; class XieFanZi { public: virtual XieZi* MaiXie(std::string sha_zi_xie) = 0; }; class XieFanZiDeTuoXieZhuanGui : public XieFanZi{ public: XieZi* MaiXie(std::string sha_zi_xie) { if ("shatanxie" == sha_zi_xie) { return new ShaShaHai(); } else if ("renzituo" == sha_zi_xie) { return new RenZiTuo(); } else { return new ZaPai(); } } }; class XieFanZiDeYunDongXieZhuanGui : public XieFanZi { public: XieZi* MaiXie(std::string sha_zi_xie) { if ("paobuxie" == sha_zi_xie) { return new PaoBuHai(); } else if ("lanqiuxie" == sha_zi_xie) { return new LanQiuHai(); } else if ("zuqiuxie" == sha_zi_xie) { return new ZuQiuHai(); } else { return new ZaPai(); } } }; int main () { { std::cout << "-------------welcom to yilou zhuangui---------------" << std::endl; XieFanZi * yilou = new XieFanZiDeTuoXieZhuanGui(); XieZi * xiezi1 = yilou->MaiXie("shatanxie"); xiezi1->ShaXie(); XieZi * xiezi2 = yilou->MaiXie("renzituo"); xiezi2->ShaXie(); XieZi * xiezi3 = yilou->MaiXie("dongdongxie"); xiezi3->ShaXie(); } { std::cout << "-------------welcom to erlou zhuangui---------------" << std::endl; XieFanZi * erlou = new XieFanZiDeYunDongXieZhuanGui(); XieZi * xiezi1 = erlou->MaiXie("shatanxie"); xiezi1->ShaXie(); XieZi * xiezi2 = erlou->MaiXie("paobuxie"); xiezi2->ShaXie(); XieZi * xiezi3 = erlou->MaiXie("zuqiuxie"); xiezi3->ShaXie(); } }
-
说明
- 当规模变大,就不好管理,就需要拆分,分两层。
- 两层就雇两个店员照看。
-
-
总结