工厂设计模式

工厂模式是为了创建大量相同的对象而设计的,工厂模式又分为简单工厂和抽象工厂,可以理解为初级工厂和高级工厂。高级工厂能做更多的事情。

简单工厂:一个工厂类,用来生成各种产品,产品有很多种,所以定义一个抽象的产品类。实现多态。工厂模式是经常被使用的一种方法。下面是一个例子。

工厂类:

#pragma once
#include"Animal.h"
class Factory
{

public:
	Animal* createBear();

	Animal* createBird();

	Animal* createDog();
};

Animal* Factory::createBear()
{
	return new Bear;
}

Animal*  Factory::createBird()
{
	return new Bird;
}

Animal*  Factory::createDog()
{
	return new Dog;
}

抽象产品类:


#pragma once
#include<iostream>
class Animal
{
public:
	std::string name;
	int m_HP;
	int m_MP;
	
	virtual void setHP(int hp)=0; // 设置HP

	virtual void setMP(int mp)=0;


	virtual int getHp()=0;

	virtual int getMP()=0;

	
};

子类:

class Bear :
	public	Animal
{
public:
	void setHP(int hp); // 设置HP

	void setMP(int mp);


	int getHp();

	int getMP();

	Bear()
	{
		std::cout << "Bear被 调用" << std::endl;
	}
	~Bear()
	{
		std::cout << "Bear被 调用" << std::endl;
	}
};


class Bird
	:public Animal
{

	void setHP(int hp); // 设置HP

	void setMP(int mp);


	int getHp();

	int getMP();
};


class Dog
	:public  Animal
{
public:
	void setHP(int hp); // 设置HP

	void setMP(int mp);


	int getHp();

	int getMP();
};

实现:


int main(int argc, char **argv)
{
	Factory factory;


	Animal* bear = factory.createBear();

	Bear *  pb = dynamic_cast<Bear*>(bear);
	pb->setHP(100);
	cout << pb->getHp() << endl;
	delete pb;

	Animal * pd = factory.createDog();
	Dog* pdog = dynamic_cast<Dog*>(pd);
	pdog->setHP(102);
	cout << pdog->getHp() << endl;
	delete pdog;

	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值