设计模式

工厂模式

概述

该模式用来封装和管理类的创建,终极目的是为了解耦,实现创建者和调用者的分离。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

工厂模式可以细分为三种:

简单工厂模式

工厂方法模式

抽象工厂模式

传统模式

创建不同种类的pizza对象

Pizza orderPizza(String type) {
Pizza pizza;
if(type.equals("chess"){
pizza = new ChessPizza();
}else if(type.equals("greek"){
pizza = new GreekPizza();
}else if(type.equals("apple"){
pizza = new ApplePizza();
}
....
//准备材料
pizza.prepare();
//烘烤
pizza.bake();
//切
pizza.cut();
//装盒
pizza.box();
return pizza;
}

简单工厂模式

在传统模式中直接让调用者去创建对象。但是,假如创建对象的过程比较复杂,我们可以将其交由一个新的类来创建,这种类叫工厂类,调用者只需要调用这个类的函数来创建对象就行了,无需再书写创建对象。

public class SimpleFactory {

public static Pizza createPizza(String pizzaType){
Pizza pizza = null;
System.out.println("使用了简单工厂模式");
if (pizzaType.equals("greek")) {
pizza = new GreekPizza();
pizza.setName("greek");
} else if (pizzaType.equals("chess")) {
pizza = new ChessPizza();
pizza.setName("chess");
} else if (pizzaType.equals("pepper")) {//新增PepperPizza的时候 修改了源代码 违反了ocp原则 如果新增10000个?
//那就很麻烦了
pizza = new PepperPizza();
pizza.setName("pepper");
}

return pizza;
}
}