一.概述
1)简单工厂模式是类的创建模式,又叫做静态工厂方法(Static Factory Method)模式,是工厂模式的一种。简单工厂模式由一个工厂对象决定创建出哪一种产品类的实例,是工厂模式家族中最简单实用的模式。
2)简单工厂模式:定义了一个创建对象的类,由这个类来封装实例化对象的行为(代码)。
3)在软件开发中,当我们会用到大量的创建某种、某类或者某批对象时,就会使用到工厂模式。
二.代码演示
/**
* Created by John on 2018/6/22.
* 简单工厂模式(静态工厂方法模式)
*/
public class SimplePizzaFactory {
public static Pizza createPizza(PizzaType pizzaType) {
Pizza pizza = null;
switch (pizzaType) {
case CHEESE:
pizza = new CheesePizza();
break;
case GREEK:
pizza = new GreekPizza();
break;
default:pizza = new CheesePizza();
}
return pizza;
}
}
public interface Pizza {
void eat();
}
public class CheesePizza implements Pizza{
@Override
public void eat() {
System.out.println("eat cheese");
}
}
public class GreekPizza implements Pizza {
@Override
public void eat() {
System.out.println("eat greek");
}
}
public enum PizzaType {
CHEESE(1,"cheese"),
GREEK(2,"greek")
;
private int type;
private String desc;
PizzaType(int type, String desc) {
this.type = type;
this.desc = desc;
}
}
@Test
public void testSimpleFactory(){
PizzaType pizzaType = PizzaType.GREEK;
Pizza pizza = SimplePizzaFactory.createPizza(pizzaType);
pizza.eat();
}
- JDK中简单工厂模式的应用
JDK 中的Calendar类中,就使用了简单工厂模式。
三.总结
- 优点:
模式的核心是工厂类。这个类含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的实例。而客户端则可以免除直接创建对象的责任。简单工厂模式通过这种做法实现了对责任的分割。 - 缺点:
这个工厂类集中了所有的创建逻辑,当有复杂的多层次等级结构时,所有的业务逻辑都在这个工厂类中实现。什么时候它不能工作了,整个系统都会受到影响。并且简单工厂模式违背了开闭原则(对扩展的开放,对修改的关闭)。