版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/river472242652/article/details/83022125
主要是修改了简单工厂不符合开闭原则的限制
基类和子类与简单工厂一致
工厂方法类
#pragma once
#include "CarBaseExtens.hpp"
#include <memory>
class CarFacotryMethod {
public:
template<class T>
static std::shared_ptr<CarBase> Create() {
return std::make_shared<T>();
}
static void Test() {
auto car= CarFacotryMethod::Create<GMCar>();
car->PrintName();
car=CarFacotryMethod::Create<FordCar>();
car->PrintName();
car = CarFacotryMethod::Create<ToyotaCar>();
car->PrintName();
}
};
测试调用
#include "Manager.hpp"
#include "CarFactory.hpp"
#include "CarFactoryMethod.h"
void main() {
//CarFactory::TEST();
CarFacotryMethod::Test();
system("pause");
}
测试结果