简单工厂模式 - 优缺点

模式的核心是工厂类,这个类负责产品的创建,而客户端可以免去产品创建的责任,这实现了责任的分割。但由于工厂类集中了所有产品创建逻辑的,如果不能正常工作的话会对系统造成很大的影响。如果增加新产品必须修改工厂角色的源码

 
//filename factory.h
#include <iostream>

#include <string>

class Car 

public:
    std::string Drive(); 
    virtual  std::string Stop() = 0; 
}; 

class RedCar :public Car 

public:
    std::string Drive() { 
        return "RedCar is Drived"; 
    } 

    std::string Stop() { 
        return "RedCar is Stoped"; 
    } 
} ;

class BlueCar :public Car 
//一定要从写父类,使用override 
public:
    std::string Drive() { 
        return "BlueCar is Drived"; 
    } 

    std::string Stop() { 
        return "BlueCar is Stop"; 
    } 

} ;

//工厂类,来构造其实例 
class CarFactory 

//依赖类Car 
public:
    Car *Create(std::string CarType) { 
        if(CarType == "red") { 
            return new RedCar(); 
        } else if(CarType == "blue" ) { 
            return new BlueCar(); 
        } else 
            return nullptr; 
    } 
};

 使用实例:

#include "factory.h"

int main(){
    CarFactory *carF = new CarFactory();
    
    Car *car = carF->Create("red");//实例哪个类
    return 0;
}