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;
}
相关推荐
wearegogog1231 小时前
基于MATLAB实现雷达RCS Swerling模型
开发语言·matlab
星梦清河2 小时前
Java—异步编程
java·开发语言
接着奏乐接着舞2 小时前
dto 转entity方法
java·开发语言
0x00072 小时前
译 Anders Hejlsberg 谈 C# 与 .NET
开发语言·c#·.net
czhaii2 小时前
基于51单片机的Modbus从机通信系统
开发语言·单片机
elseif1232 小时前
【C++】vector 详细版
开发语言·c++·算法
codingPower2 小时前
JAVA后端安全进阶:基于HMAC-SHA256+Nonce+Timestamp的API防重放攻击方案
java·开发语言·spring boot·安全
暗冰ཏོ2 小时前
Go 语言从入门到后端项目实战完整指南
开发语言·后端·golang·go·go语言
Xin_ye100862 小时前
C# 零基础到精通教程 - 第十七章:前端集成——Blazor 基础
开发语言·c#