加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Factory Method工厂方法C++版

发布时间:2020-12-15 04:47:51 所属栏目:百科 来源:网络整理
导读:#pragma once //product.h #ifndef PRODUCT_H #define PRODUCT_H #include using namespace std; class Product { public: Product() {} ~Product(){} virtual void name() = 0; }; class Product1:public Product { public: Product1() {} ~Product1(){} vo

#pragma once

//product.h

#ifndef PRODUCT_H

#define PRODUCT_H

#include

using namespace std;

class Product

{

public:

Product() {}

~Product(){}

virtual void name() = 0;

};

class Product1:public Product

{

public:

Product1() {}

~Product1(){}

void name() { cout << "Product1" << endl; }

};

class Product2:public Product

{

public:

Product2() {}

~Product2(){}

void name() { cout << "Product2" << endl; }

};

#endif // !PRODUCT_H

#pragma once

//factory.h

#ifndef FACTORY_H

#define FACTORY_H

#include "product.h"

class Factory

{

public:

Factory() {}

~Factory(){}

virtual Product* Create() = 0;

};

class ConcreteFactory1 :public Factory

{

public:

ConcreteFactory1() {}

~ConcreteFactory1() {}

Product*Create() { return new Product1; }

};

class ConcreteFactory2 :public Factory

{

public:

ConcreteFactory2() {}

~ConcreteFactory2() {}

Product*Create() { return new Product2; }

};

#endif // !FACTORY_H

//main.cpp

#include

#include "factory.h"

int main()

{

cout << "生产开始"<< endl;

Factory* pFactory1 = new ConcreteFactory1();

Product* pProduct1 = pFactory1->Create();

pProduct1->name();

Factory* pFactory2 = new ConcreteFactory2();

Product* pProduct2 = pFactory2->Create();

pProduct2->name();

delete pFactory1;

pFactory1 = NULL;

delete pFactory2;

pFactory2 = NULL;

system("pause");

return 0;

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读