工厂模式-

工厂模式-简单工厂模式 属于类的创建型模型 又叫静态工厂方法模式 定义一个类来负责创建其他类的实例 被创建的实例通常具有共同的父类 include iostream include string using namespace std 简单工厂模式 class Phone string iostream

大家好,我是讯享网,很高兴认识大家。

简单工厂模式

  • 属于类的创建型模型,又叫静态工厂方法模式。
  • 定义一个类来负责创建其他类的实例,被创建的实例通常具有共同的父类。
#include<iostream> #include<string> using namespace std; //简单工厂模式: class Phone { 
    public: virtual void show_name() { 
    cout << "我是手机!\n\n"; } }; class iQOO_phone: public Phone { 
    public: virtual void show_name() { 
    cout << "我是iQOO手机!\n\n"; } }; class Vivo_phone: public Phone { 
    virtual void show_name() { 
    cout << "我是vivo手机!\n\n"; } }; class Factory { 
    public: Phone* creat(string name) { 
    if (name == "iQOO") { 
    cout << "开始生产iQOO手机!\n\n"; return new iQOO_phone; } if (name == "vivo") { 
    cout << "开始生产vivo手机!\n\n"; return new Vivo_phone; } else { 
    cout << "手机类型错误!已退出!\n\n"; return nullptr; } } }; int main() { 
    Factory *f = new Factory; Phone *p = f->creat("iQOO"); p->show_name(); return 0; } 

讯享网

工厂模式

  • 每个工厂生产一类产品
讯享网#include<iostream> #include<string> using namespace std; //工厂模式: class Phone { 
    public: virtual void show_name() { 
    cout << "我是手机!\n\n"; } }; class iQOO_phone: public Phone { 
    public: virtual void show_name() { 
    cout << "我是iQOO手机!\n\n"; } }; class Vivo_phone: public Phone { 
    virtual void show_name() { 
    cout << "我是vivo手机!\n\n"; } }; class Factory_iQOO { 
    public: Phone* creat() { 
    cout << "开始生产iQOO手机!\n\n"; return new iQOO_phone; } }; class Factory_vivo { 
    public: Phone* creat() { 
    cout << "开始生产vivo手机!\n\n"; return new Vivo_phone; } }; int main() { 
    Factory_iQOO *iQOO = new Factory_iQOO; Phone *p = iQOO->creat(); p->show_name(); Factory_vivo *vivo = new Factory_vivo; p = vivo->creat(); p->show_name(); return 0; } 

抽象工厂

  • 可以向客户端提供一个接口,使得客户端在不指定产品具体类型的情况下,能够创建多个产品族的产品对象。
  • 工厂方法模式针对的是一个产品等级结构,而抽象工厂模式针对的是多个产品等级结构。

在这里插入图片描述
讯享网
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小讯
上一篇 2025-04-07 07:39
下一篇 2025-04-06 18:44

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/60152.html