一、简单工厂模式
工厂类判断要生产什么产品并调用相应的构造函数。当增加新产品时就要修改工厂类,这违反了“软件实体(类、模块、函数)可以扩展,但是不可修改”的开放封闭原则。
产品基类有纯虚函数。
产品子类继承产品基类。
工厂类中有生产函数。
使用方法:创建产品基类指针,创建工厂对象,调用工厂对象的生产函数,套入产品类型参数,并将返回值赋给基类指针,基类指针可调用相应产品子类的接口函数。
二、工厂方法模式
在简单工厂模式的基础上,将工厂类改为拥有纯虚生产函数的工厂基类,增设继承工厂基类的工厂子类,每一种工厂子类只生产一种产品。
使用方法:创建产品基类指针,要生产哪种产品,就创建对应的工厂子类对象,并调用该工厂子类对象的生产函数,将返回值赋给基类指针,基类指针可调用相应产品子类的接口函数。
三、抽象工厂模式
在工厂方法模式的基础上,增设产品族,每一个产品族都有一个产品基类,并在工厂基类和工厂子类中增添相应的纯虚生产函数和接口生产函数。