当前位置: 首页 > news >正文

8. 工厂方法模式

一 典型工厂方法模式(Factory Method)结构图

在这里插入图片描述

二 典型工厂模式实现

在这里插入图片描述

测试代码

#include <iostream>
using namespace std;
 
class Product{
public:
    string name;
    virtual void show(){
        cout << "我是:";
    }
};
class Desk : public Product
{
public:
    Desk(){
        name = "桌子";
    }
    void show(){
        Product::show();
        cout << name  << endl;
    }
};
 
class Cup : public Product
{
public:
    Cup(){
        name = "杯子";
    }
    void show(){
        Product::show();
        cout << name  << endl;
    }
};
class IFactory{
public:
    virtual Product* createProduct() = 0;
};
 
class DeskFactory : public IFactory{
public:
    Product* createProduct(){
        return new Desk();
    }
};
class CupFactory : public IFactory{
public:
    Product* createProduct(){
        return new Cup();
    }
};
 
int main()
{
    IFactory *ifactory = new DeskFactory();
    Product *product = ifactory->createProduct();
    product->show();
 
    IFactory *ifactory_2 = new CupFactory();
    Product *product_2 = ifactory_2->createProduct();
    product_2->show();
    return 0;
}

测试结果:

我是:桌子
我是:杯子

参考:https://lkmao.blog.csdn.net/article/details/128952843

相关文章:

  • 使用vpn/代理后电脑无法正常上网
  • Android 12修改usb tp触摸唤醒
  • 外包干了3个月,技术退步明显。。。。。
  • CHATGPT中国免费网页版有哪些-CHATGPT中文版网页
  • Vulnhub-driftingbules:5 靶机复现完整过程
  • 踩坑 | vue动态绑定img标签src属性的一系列报错
  • Python二级 每周练习题20
  • vue3学习笔记
  • C语言每日一题(9):跳水比赛猜名次
  • Java初始化大量数据到Neo4j中(一)
  • Openresty(二十二)ngx.balance和balance_by_lua终结篇
  • mySQL 安装
  • RocketMQ —消费者负载均衡
  • leetcode刷题笔记/代码随想录笔记——移除字符串中多余空格
  • 数组07-滑动窗口、HashMap
  • Leetcode.2571 将整数减少到零需要的最少操作数
  • Lnmp架构之mysql数据库实战2
  • 学习windows系统让python脚本在后台运行的方法
  • Java如何解决浮点数计算不精确问题
  • 从零开始之了解电机及其控制(10)空间矢量理论
  • 马上评|科学谋划“十五五”,坚定不移办好自己的事
  • 习近平主持召开部分省区市“十五五”时期经济社会发展座谈会
  • 新片|《我仍在此》定档5月,《新·驯龙高手》同步北美上映
  • 为治理商家“卷款跑路”“退卡难”,预付式消费司法解释5月起实施
  • 移动互联网未成年人模式正式发布
  • 中国人保一季度业绩“分化”:财险净利增超92%,寿险增收不增利