1.工厂方法模式简介
工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
2.源码实现
#include <iostream>
#include <string>
using namespace std;
//车类
class Car
{
public:
virtual ~Car(){}
virtual void createCar(void) = 0;
};
//奔驰车
class BenzCar : public Car
{
public:
BenzCar()
{
cout << "Benz::Benz()" << endl;
}
virtual ~BenzCar(){}
virtual void createCar(void)
{
cout << "BenzCar::createCar()" << endl;
}
};
//宝马车
class BmwCar : public Car
{
public:
BmwCar()
{
cout << "Bmw::Bmw()" << endl;
}
virtual ~BmwCar(){}
virtual void createCar(void)
{
cout << "BmwCar::createCar()" << endl;
}
};
//车工厂
class Factory
{
public:
virtual ~Factory(){}
virtual Car *createSpecificCar(void) = 0;
};
//奔驰车厂
class BenzFactory : public Factory
{
public:
virtual ~BenzFactory(){}
virtual Car *createSpecificCar(void)
{
return (new BenzCar());
}
};
//宝马车厂
class BmwFactory : public Factory
{
public:
virtual ~BmwFactory(){}
virtual Car *createSpecificCar(void)
{
return (new BmwCar());
}
};
int main()
{
Factory *factoryA = new BenzFactory();
Car *specificCarA = factoryA->createSpecificCar();
Factory *factoryB = new BmwFactory();
Car *specificCarB = factoryB->createSpecificCar();
delete factoryA;
delete factoryB;
delete specificCarA;
delete specificCarB;
return 0;
}
3.编译源码
$ g++ -o example example.cpp
4.运行及其结果
$ ./example
Benz::Benz()
Bmw::Bmw()
网友评论