C++之简单工厂模式

C++之简单工厂模式

简单工厂模式属于类的创建型模式,也称为“静态工厂方法模式”。
通过专门定义一个类来负责创建其他类的实例,被创建的实例通常有共同的父类(抽象接口)
在这里插入图片描述

解读

1. 具体的工厂创建具体的实例 <工厂创建苹果、香蕉>
2. 工厂返回值类型为抽象的类<工厂返回值为水果类>–>(父类指针指向子类对象)
3. 具体的产品继承于抽象的类<苹果香蕉继承于水果类>–>(继承+虚函数重写)

源码

#include <iostream>
using namespace std;

//**************抽象类接口*******************//
class AbFruit
{
public:
	virtual void getFruit() = 0;							//1、虚函数(水果)
};
//**************具体实现********************//
class Banana :public AbFruit								//2、继承
{
public:
	virtual void getFruit()									//1.1虚函数重写
	{
		cout << "香蕉" << endl;
	}
};
class Apple :public AbFruit
{
public:
	virtual void getFruit()
	{
		cout << "苹果" << endl;
	}
};

//****************工厂********************//
class Factory
{
public:
	AbFruit *create(char* p)
	{
		if (strcmp(p, "banana") == 0)      return new Banana;
		else if (strcmp(p, "apple") == 0)  return new Apple;
		else { cout << "错误" << endl; }	  
	}
};
//**************函数入口******************//

void main()
{
	Factory *f = new Factory;          //具体的工厂,所以new一个

	AbFruit *fruit = NULL;				
	fruit = f->create("banana");	  //工厂生产香蕉,
	fruit->getFruit();				  //获取香蕉,       3.父类指针指向子类对象。 1+2+3有多态产生。
	delete fruit;
	delete f;
	system("pause");
	return;
}

分析

优点:简单好用
缺点:“高内聚”做的不好,如果想要添加西红柿,则需要修改代码(Factory)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值