C++实现简单工厂模式

概述

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

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

优点

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

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

缺点

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

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

使用场景

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

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

UML类图

C++实现简单工厂模式_第1张图片

实例

	//抽象车
	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;
	}

你可能感兴趣的:(C++,设计模式,C++,简单工厂模式)