-
说明
-
案例
-
买鞋
- 外地人鞋贩子那儿买鞋。
- 本地方言和书面语的对应。
-
代码
#include<iostream> #include<string> class XieZi { public: virtual void ShaXie() = 0; }; class TuoXie : public XieZi { public: void ShaXie() override { std::cout << "tuo hai!" << std::endl; } }; class BoHai : public XieZi { public: void ShaXie() override { std::cout << "bo hai!" << std::endl; } }; class ZaPai : public XieZi { public: void ShaXie() override { std::cout << "bu xiao de!" << std::endl; } }; class XieFanZi { public: static XieZi* MaiXie(std::string sha_zi_xie) { if ("tuoxie" == sha_zi_xie) { return new TuoXie(); } else if ("yundongxie" == sha_zi_xie) { return new BoHai(); } else { return new ZaPai(); } } }; int main () { XieZi * xiezi1 = XieFanZi::MaiXie("tuoxie"); xiezi1->ShaXie(); XieZi * xiezi2 = XieFanZi::MaiXie("yundongxie"); xiezi2->ShaXie(); XieZi * xiezi3 = XieFanZi::MaiXie("fanbuxie"); xiezi3->ShaXie(); }
-
说明
- 用书面语买到了鞋子,问当地人,则告诉你当地方言是什么。
- 告诉鞋贩子想买什么鞋,然后就会根据告诉鞋贩子鞋的种类
(key)
,鞋贩子就给你一双鞋。 - 然后问当地人,就是调用
ShaXie
.这里需要是虚函数的多态来完成。
-
背后的故事
- 虽然这里简化了许多,只需要告诉类型即可,然后鞋贩子就去进货。进货的过程很可能很复杂。
- 卖鞋的不想要这么复杂,也不需要知道有多复杂。只需要告诉名字即可。
- 所以就是简化了创建的很多逻辑,不需要知道怎么生产,从哪儿进的货,什么材料制造的,产地在哪儿等复杂的过程。
-
-
总结
C++ 01 工厂模式
于 2022-05-11 23:05:34 首次发布