通俗易懂说设计模式(2)简单工厂模式

1. 定义

简单工厂模式并不是23种设计模式之一,它只能算工厂模式的一个特殊实现。

2. 通俗易懂理解

水果摊(抽象产品):可以卖很多种水果,如苹果香蕉,梨……
顾客买水果(具体的产品):通过水果摊买水果(派生/产生具体的水果,如苹果)
水果种植厂(工厂):根据市场客户需求,种植具体的水果

3. 使用场景

  1. 需要创建的对象较少
  2. 客户端不关心对象的创建过程

4. 角色分配

4.1 工厂角色(Factory):

简单工厂的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外部直接调用,创建所需的产品对象。

4.2 抽象产品(Product):

简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。

4.3 具体产品(Concrete Product):

简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。

5. 缺点

每次添加一个功能,一个具体的产品都要修改代码,添加分支条件。

6. C++代码示例

//抽象产品 水果类
class Fruit
{
	public:
		virtual void getFruit() = 0;
};

//具体产品 苹果
class Apple :public Fruit
{
	public:
		virtual void getFruit()
		{
			cout << "Apple come"<<endl;
		}
};

//具体产品 香蕉
class Banana :public Fruit
{
	public:
		virtual void getFruit()
		{
			cout << "Banana come"<<endl;
		}
};

//工厂类 根据需要生产水果
class Factory
{
	public:
		Fruit *create(char *product)
		{
			if ( strcmp( product, "Apple" ) == 0 )
			{
				return new Apple ;
			}else if ( strcmp( product, "Banana" ) == 0 )
			{
				return new Banana;
			}else //若需要添加具体产品,这里添加分支
			{
				cout<< " No support"<<endl;
			}
	};
	
//测试函数
void test()
{
	Factory *fa = new Factory;
	Fruit *fruit = NULL;
	fruit = fa->create("Apple");
	fruit->getFruit();
	delete fruit;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值