工厂方法模式:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。通过在工厂类中包含必要的逻辑判断,根据客户端的选择条件动态实例化相关类,对客户端来说,去除了对具体产品的依赖。适用于产品种类结构单一的场合,为一类产品提供创建的接口。
类图:
关键代码:
// ConcreteFactory.h
#include "Product.h"
#include "Factory.h"
class ConcreteFactory : public Factory
{
public:
ConcreteFactory();
virtual ~ConcreteFactory();
virtual Product* factoryMethod();
};
// ConcreteFactory.cpp
#include "ConcreteFactory.h"
#include "ConcreteProduct.h"
ConcreteFactory::ConcreteFactory(){
}
ConcreteFactory::~ConcreteFactory(){
}
// 返回产品实例
Product* ConcreteFactory::factoryMethod(){
return new ConcreteProduct();
}