创建型模式 工厂模式
创建型模式 工厂模式
/** * 创建型模式 工厂模式 * 工厂方法模式同样属于类的创建型模式又被称为多态工厂模式 。 * 符合"开放-封闭"原则 通过添加代码的方式,不是通过修改代码的方式完成功能的增强。 * 工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。 * 核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。 * * 抽象工厂(Creator)角色 * 工厂方法模式的核心,任何工厂类都必须实现这个接口。 * 具体工厂( Concrete Creator)角色 * 具体工厂类是抽象工厂的一个实现,负责实例化产品对象。 * 抽象(Product)角色 * 工厂方法模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 * 具体产品(Concrete Product)角色 * 工厂方法模式所创建的具体实例对象 * */ #include <iostream> class Fruit { public: virtual void sayname() = 0; virtual ~Fruit() {} }; class Banana: public Fruit { public: virtual void sayname() override { std::cout << "我是香蕉" << std::endl; } }; class Pear: public Fruit { public: virtual void sayname() override { std::cout << "我是梨子" << std::endl; } }; class AbFactory { public: virtual Fruit * CreateProduct() = 0; virtual ~AbFactory() {} }; class BananaFactory: public AbFactory { public: virtual Fruit * CreateProduct() override { return new Banana; } }; class PearFactory: public AbFactory { public: virtual Fruit * CreateProduct() override { return new Pear; } }; void mytest() { AbFactory *factory = nullptr; Fruit *fruit = nullptr; factory = new BananaFactory(); fruit = new Banana(); fruit->sayname(); delete factory; factory = nullptr; delete fruit; fruit = nullptr; factory = new PearFactory(); fruit = new Pear(); fruit->sayname(); delete factory; factory = nullptr; delete fruit; fruit = nullptr; return; } int main() { mytest(); system("pause"); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」