c++之工厂模式

概念

工厂模式属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一。工厂中封装了一个对象的接口,对象的实例化在其子类中进行,工厂从用户获取产品,产品的创建在子类中完成,其子类实现工厂接口,返回的也是一个抽象的产品,工厂将该产品给用户,用户可以不知道产品创建的具体过程,直接在工厂取得自己说要的商品,即可获得。

优缺点

优点

1.用户可以不知道生产的具体操作,直接调用工厂就可获得所需要的产品。
2.如果要增加一种产品的话,直接增加一个子类的判断与实现,扩展性高
3,调用者只需知道调用的接口就行

缺点

1.如果子类太多了的话,每一个子类都要其实现与判断,造成复杂性增加.
2.违背了开放-封闭原则

列子

题目

假如有一个生产水果的工厂,生产苹果,桃子和杨桃,顾客告诉工厂需要苹果这一商品,工厂调用产品的生产,给顾客苹果这一商品。

分析

在工厂中我们创建一个接口和接口的实现类,定义了一个水果工厂,工厂从顾客中获取信息,子类中创建苹果这一商品,子类实现商品的接口,将所产生的商品给工厂,工厂给客户。

代码

#include <  iostream>
#include<  string>
using namespace std;
class fruit_product {//定义一个接口
public:
	virtual void show_fruit()=0;
}
//定义接口的实现类
class apple :public fruit_product {  //生产苹果
public:
	void show_fruit() {
		cout << "put a furit is apple" << endl;
	}
};
class peach :public fruit_product {   //生产桃子
public:
	void show_fruit() {
		cout << "put a furit is peach" << endl;
	}
};
class carambola :public fruit_product {   //生产杨桃
public:
	void show_fruit() {
		cout << "put a furit is carambola" << endl;
	}
};
class fruit_factory {    //创建工厂
	public:
		fruit_product *get_furit(string type) { //获取信息 判断生产的产品,返回信息
			if (type == "apple") {
				return new apple();
			}
			if (type == " peach") {
				return new  peach();
			}
			if (type == "carambola ") {
				return new carambola();
			 }
		 }
};
int main() {
    fruit_factory *p = new fruit_factory(); //创建一个工厂
    fruit_product *f=p->get_furit("apple");
	f->show_fruit();
}






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值