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;
}
相关推荐
Wang's Blog9 小时前
Java 项目实战: 交友项目 - FastDFS:入门案例
java·开发语言·交友
apcipot_rain10 小时前
C++转Java日记(03)
java·开发语言·c++
布莱克60510 小时前
C++ 中 map 的 insert 与 emplace:key 已存在时会覆盖吗?
开发语言·数据结构·c++·算法·map
xys_67810 小时前
深挖C++:类和对象(中)
开发语言·c++
灿飞屋11 小时前
Rust 编程其实很简单
开发语言·rust
MOONICK12 小时前
QT元数据
开发语言·qt
D e re k ZH13 小时前
C++ 系统学习手记:从语法细节到工程实践
开发语言·数据结构·c++·算法
灿飞屋14 小时前
Kotlin与Java虚拟机三:控制流
android·java·开发语言·后端·python·kotlin·安卓
xiaoye-duck14 小时前
《C++ 项目:手写大模型接入 SDK》Ollama接口设计(上):初始化、全量响应实现和测试
开发语言·网络·c++·语言模型
zaizai100715 小时前
【Effective Modern C++】学习第一章
c++