Factory Method | 工厂方法

(1)可以使用工厂基类创建产品。

(2)可以使用工厂基类来调用子类实例化的方法,实现了多态。

cpp 复制代码
#include<iostream>
#include<thread>
#include<string>
using namespace std;
//===========abstract product 抽象产品 =====
class Door{
public:
    Door(){cout<<"door:构造函数被调用"<<endl;}
    virtual ~Door()=default;
    virtual void show()=0;
};
//=======concrete product 具体产品=========
class StoneDoor:public Door{
public:
    StoneDoor(){cout<<"StoneDoor:构造函数被调用"<<endl;}
    virtual ~StoneDoor()=default;
    void show() override {cout<<"StoneDoor:show函数被调用"<<endl;}
};
//========factory 工厂基类===========
class Factory{
public:
    Factory(){cout<<"Factroy:构造函数被调用"<<endl;}
    virtual ~Factory()=default;
    virtual Door* creat()=0;
    virtual void DoSomething()=0;
};
//==========concrete Factory 具体产品===========
class StoneFactory:public Factory{
public:
    StoneFactory(){cout<<"StoneFactroy:构造函数被调用"<<endl;}
    virtual ~StoneFactory(){cout<<"StoneFfactory:析构函数被调用"<<endl;}
    Door* creat() override{
        return new StoneDoor;
    }
    void DoSomething() override{cout << "StoneFactory:dosomethng函数被调用"<<endl;}

};
//========client 连接函数=================
int main(int argv,char* argc[]){
    Factory* factory= new StoneFactory;
    Door* door = factory->creat();
    factory->DoSomething();
    delete factory;
    delete door;
    return 0;
}
相关推荐
by2099943 分钟前
从结构体到对象:正式学习C++类的骨架、封装与this指针
c++·经验分享·学习
乌暮1 小时前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习
2601_962218612 小时前
C语言中三种库的编译和使用方法
开发语言·c++
传奇开心果编程2 小时前
中庸、有容、破执:仓颉编程语言的中华智慧结晶——三重哲学境界思辨
开发语言·华为·开源·软件工程
jimy12 小时前
派生类重写基类虚函数(二):override的作用
开发语言·c++
_upupup2 小时前
异常(C++)
java·开发语言·jvm
ebiobiz2 小时前
基于 GD32 Embedded Builder (GEB) 与 Nimmake 的 MCU 工程搭建指南
c++·python·单片机·嵌入式硬件·mcu
hetao17338372 小时前
2026-09-29 hetao1733837 的刷题记录
c++·算法
:mnong2 小时前
几何内核“四大金刚“:ACIS、Parasolid、CGM、Open CASCADE 核心特征深度解析
c++·cad·cax
霸道流氓气质2 小时前
ComfyUI 图像生成工作流完全指南:从节点编排到Java生产级图像生产实战
java·开发语言·人工智能