创建型模式 简单工厂模式
创建型模式 简单工厂模式
/** * 创建型模式 简单工厂模式 * 简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 * * 1.工厂(Creator)角色 * 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。 * 2.抽象(Product)角色 * 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 * 3.具体产品(Concrete Product)角色 * 简单工厂模式所创建的具体实例对象 * */ //思想: 核心思想是用一个工厂,来根据输入的条件产生不同的类,然后根据不同类的virtual函数得到不同的结果。 //元素分析: //抽象产品类:水果类 //具体的水果了:香蕉类、苹果类、梨子 //优点 适用于不同情况创建不同的类时 //缺点 客户端必须要知道基类和工厂类,耦合性差 增加一个产品,需要修改工厂类 #include <iostream> class Fruit { public: virtual void getFruit() = 0; virtual ~Fruit() {} }; class Banana: public Fruit { public: virtual void getFruit() override { std::cout << "我是香蕉" << std::endl; } }; class Pear: public Fruit { public: virtual void getFruit() override { std::cout << "我是梨子" << std::endl; } }; class Factory { public: static Fruit * Create(char * name) { Fruit *tmp = nullptr; if (strcmp(name, "banana") == 0) { tmp = new Banana(); } else if (strcmp(name, "pear") == 0) { tmp = new Pear(); } else { std::cout << "不支持" << std::endl; tmp = nullptr; } return tmp; } }; void mytest() { Fruit *fruit = nullptr; fruit = Factory::Create("banana"); if (fruit == nullptr) { std::cout << "创建香蕉失败" << std::endl; } fruit->getFruit(); delete fruit; fruit = nullptr; fruit = Factory::Create("banana"); if (fruit == nullptr) { std::cout << "创建梨子失败" << std::endl; } fruit->getFruit(); delete fruit; fruit = nullptr; return; } int main() { mytest(); system("pause"); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南