声明:本博文篇幅短,适合快速回顾、朝花夕拾,不适合入门详解。
一、概念
简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
二、模式结构图
三、例子
class Factory
{
public:
static Operate CreateOperate(string op)
{
Operate oper = NULL;
switch (op)
{
case "+":
oper = new Add();
break;
case "-":
oper = new Sub();
break;
case "*":
oper = new Mul();
break;
csae "/":
oper = new Div();
break;
}
return oper;
}
};
四、优缺点
1、优点
a、简单工厂方法模式实现了责任分离。
b、因为工厂类中包含了对象生成的必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,所以客户端类中没有创建对象所需要的条件语句。
c、如果有新产品子类加入,不必修改已有的客户累代码。
2、缺点
a、由于工厂类必须知道怎样创建每个子类的对象,所以每当增加产品类的时候,都需要修改工厂类的代码。不符合开闭原则。
b、因为工厂类的工厂方法是静态的,所以工厂类中的方法不能被继承,简单工厂类只能是一个单独的类,而不能成为一个层次的类。