设计模式之简单工厂模式

本文介绍了简单工厂模式的基本概念,通过C++代码展示了如何创建一个工厂类来根据需求实例化不同类型的`CountryBass`子类,如中国、英国和美国。作者寻求对模式的理解和可能的误区指正。
摘要由CSDN通过智能技术生成

简单工厂模式

简单记录一下自己写的简单工厂模式demo,因为自己也是刚学设计模式。个人认为因为简单工厂模式就是一个工厂根据不同需求来实例化不同的对象,实际上就是一个类去管理不同的类,这样我们写代码就不要重复实例化很多类,下面给出自己写的demo
factorymodeHead.h

#include <iostream>
using namespace  std;
class CountryBass
{
public:
	CountryBass(string name) : m_name(name) {}
	virtual ~CountryBass();
	virtual void showMyCountry() = 0;
	string m_name;
};
//中国
class China :public CountryBass
{
public: 
	China(string name) :CountryBass(name) {}
	virtual ~China();
	virtual void showMyCountry();
};
//英国
class Uk :public CountryBass
{
public:
	Uk(string name) :CountryBass(name) {}
	virtual ~Uk();
	virtual void showMyCountry();
};
//美国
class Us :public CountryBass
{
public:
	Us(string name) :CountryBass(name) {}
	virtual~Us();
	virtual void showMyCountry();
};

//工厂类
class FactoryClass
{
public:
	CountryBass* showEachCountry(int type);
};

factorymodeHead.cpp

#include "factorymodeHead.h"
void China::showMyCountry()
{
	cout << "我是" <<m_name<< endl;
}
China::~China()
{

}

Uk::~Uk()
{

}

void Uk::showMyCountry()
{
	cout << "我是" << m_name << endl;
}

Us::~Us()
{

}

void Us::showMyCountry()
{
	cout << "我是" << m_name << endl;
}

CountryBass* FactoryClass::showEachCountry(int type)
{
	switch (type)
	{
	case 1:
		return new China("中国");
	case 2:
		return new Uk("英国");
	case 3:
		return new Us("美国");
	default:
		break;
	}
}

CountryBass::~CountryBass()
{
}

main.cpp

#include<iostream>
#include "factorymodeHead.h"
using namespace  std;
int main()
{
	FactoryClass* myFactory = new FactoryClass();
	CountryBass* china = myFactory->showEachCountry(1);
	CountryBass* uk = myFactory->showEachCountry(2);
	CountryBass* us =  myFactory->showEachCountry(3);
	china->showMyCountry();
	uk->showMyCountry();
	us->showMyCountry();
	delete china;
	delete uk;
	delete us;
	return 0;
}

往各位大神能指出我的误区,以便于我更好去理解这个简单工厂模式。周五了,下班走人,下个继续学习工厂模式下的其他两个模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值