随笔 - 100  文章 - 0  评论 - 1  阅读 - 13万

C++ 工厂模式简单实现

复制代码
//缺点:工厂类集中了所有产品类的创建逻辑,如果产品量较大,会使得工厂类变的非常臃肿。
#include <iostream> #include <string> using namespace std; class Cost{ public: virtual const string& color() = 0; }; class WhiteShit : public Cost{ public: WhiteShit():Cost(),m_color("white"){} const string& color(){ cout << m_color << endl; return m_color; } private: string m_color; }; class BlackShit : public Cost{ public: BlackShit():Cost(),m_color("black"){} const string& color(){ cout << m_color << endl; return m_color; } private: string m_color; }; class Plant{ public: virtual const string& color() = 0; }; class WhitePlant : public Plant{ public: WhitePlant():Plant(),m_color("white"){} const string& color(){ cout << m_color << endl; return m_color; } private: string m_color; }; class BlackPlant : public Plant{ public: BlackPlant():Plant(),m_color("black"){} const string& color(){ cout << m_color << endl; return m_color; } private: string m_color; }; class Factory{ public: virtual Cost *createCost() = 0; virtual Plant *createPlant() = 0; }; class WhiteFactory : public Factory{ public: Cost *createCost() override{ return new WhiteShit(); } Plant *createPlant() override{ return new WhitePlant(); } }; class BlackFactory : public Factory{ public: Cost *createCost() override{ return new BlackShit(); } Plant *createPlant() override{ return new BlackPlant(); } }; int main() { WhiteFactory factory; factory.createCost()->color(); factory.createPlant()->color(); BlackFactory factory1; factory1.createCost()->color(); factory1.createPlant()->color(); cout << "Hello, world!" << endl; return 0; }
复制代码

参考:https://www.cnblogs.com/chengjundu/p/8473564.html

posted on   缘随风烬  阅读(94)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示