C++实现简单工厂模式

概述

简单工厂模式是用单独的类来创建其它类的实例的一种创建型模式。

简单工厂模式实质是工厂类根据传入的参数,来动态决定创建哪一个产品的实例

优点

  1. 客户端与具体实现类解耦

  2. 不用考虑对象的创建过程

缺点

  1. 简单工厂模式,增加功能是通过修改源代码实现,不符合开闭原则

  2. 这个类的职责过重,这个类发生问题,会影响很多使用这个工厂的模块

使用场景

  1. 工厂类负责创建的产品类比较少,并且创建的产品不经常变更

  2. 客户端需要知道传入工厂类的参数,不需要关心如何创建对象

UML类图

简单工厂模式类图

实例

	//抽象车
	class AbstractCar{
	public:
	       virtual void run() = 0;
	};
	//BMW
	class BMW : public AbstractCar{
	public:
	       virtual void run(){
	              std::cout << "BMW run!" << std::endl;
	       }
	};
	//BenZ
	class BenZ : public AbstractCar{
	public:
	       virtual void run(){
	              std::cout << "BenZ run!" << std::endl;
	       }
	};
	//汽车工厂
	class CarFactory{
	public:
	       static AbstractCar* CreateCar(string car){
	              if( "BMW" == car){
	                     return new BMW;
	              }else if( "BenZ" == car){
	                     return new BenZ;
	              }else{
	                     return NULL;
	              }
	       }
	};
	void test01(){
	       CarFactory* factory = new CarFactory;
	       AbstractCar* car = factory->CreateCar("BMW");
	       car->run();
	       delete car;
	       car = NULL;
	       car = factory->CreateCar("BenZ");
	       car->run();
	       delete car;
	       car = NULL;
	       delete factory;
	       factory = NULL;
	}
	int main(){
	       test01();
	       return 0;
	}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值