当前位置: 首页 > 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)空间矢量理论
  • 魔都眼|上海半马鸣枪:白金标运动员、“箱根之子”齐参赛
  • “女子被前男友泼汽油烧伤案”二审将于22日开庭,一审判12年
  • 解读丨连续两日施压,特朗普为何着急让美联储降息
  • 特朗普政府将对中国建造船只加征“港口费”,外交部:损人害己
  • 中签不易,住宿更难,马拉松赛事期间酒店涨价难题如何解决?
  • 贵阳市消防救援支队原支队长李世永受审,为谋提拔给中管干部送25万