简单工厂类

 

工厂类;

定义一个类来负责创建其他类的实例,被创建的实例通常有共同的接口,有共同的父类。简单的工厂类实际是根据传入工厂类的参数来动态决定创建那个产品类。比如建筑工厂,能产生水泥、砖块,钢筋。当需要水泥时,工厂就产出水泥。在这种工厂类中要有必要的判断逻辑,能根据外部的信息决定究竟创建那个具体类的对象。这种设计思想类似于类的动态联编,即在程序执行时根据输入的信息由父指针来动态的创建子类的对象。但是不难发现工厂类的缺点。由于工厂类集中了创建所有实例对象的逻辑代码,这种高内聚的方法做的并不好。当系统中具体类的产品不断增多是,工厂类就要做相关的修改,而这却违背了设计模式中最基本的“开-——闭”原则。在“开——闭”原则中要求对于类的修改是关闭的,类的扩展是开放的。具体工厂类的实例代码如下例:

#include<iostream>
#include<iomanip>
using namespace std;
class Animal
{
public:
	virtual void cry()=0;
};
class bird:public Animal
{
public:
	virtual void cry()
	{
		cout<<"叽叽喳喳"<<endl;
	}
};
class lion:public Animal
{
public:
	virtual void cry()
	{
		cout<<"吼吼"<<endl;
	}
};
class Factory
{
public:
	Animal *pe;
	Factory()
	{
	}
	Animal* CreatObject(int a)
	{
		switch(a)
		{
		case 1:
			return new bird;
			break;
		case 2:
			return new lion;
			break;
		default:
			break;
		}
	}
};
int main()
{
	int i;
	Factory fa;
	Animal *an=NULL;
	while(cin>>i&&i)
	{
		an=fa.CreatObject(i);
		if(i==1||i==2)
		an->cry();
		if(i==1||i==2)
			delete an;
	}
	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值