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;
}
相关推荐
2zcode3 分钟前
基于MATLAB卷积神经网络的口罩佩戴检测系统
开发语言·matlab·cnn
米饭不加菜9 分钟前
使用万用表判断三极管(BJT)好坏
java·开发语言
绝世唐门三哥23 分钟前
vue3中页面返回时刷新首页的处理方案
开发语言·前端·javascript
nianniannnn23 分钟前
c++复习自存--流、异常处理、多线程与C++工程规范
开发语言·c++
geovindu33 分钟前
CSharp: Dijkstra Algorithms
开发语言·后端·算法·c#
XR12345678839 分钟前
食品饮料与制药行业GMP合规网络建设:无尘车间的网络不能成为污染源
开发语言·网络·php
学逆向的1 小时前
汇编——位运算
开发语言·汇编·算法·网络安全
zhangjw341 小时前
第29篇:Java伪共享与对象分配:并发性能优化的关键
java·开发语言·性能优化
知无不研2 小时前
缺省参数与缺省函数的区别
c++·语法
Java面试题总结2 小时前
Python 开发技巧 · 高级装饰器 —— 从基础到工业级实战
开发语言·python