簡單工廠模式 - 優缺點

模式的核心是工廠類,這個類負責產品的創建,而客戶端可以免去產品創建的責任,這實現了責任的分割。但由于工廠類集中了所有產品創建邏輯的,如果不能正常工作的話會對系統造成很大的影響。如果增加新產品必須修改工廠角色的源碼

 
//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;
}