简单工厂模式介绍
简单工厂模式又称为静态工厂方法模型,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。
案例描述
订购一个披萨,披萨的种类有cheese披萨,greek披萨,实现针对输入披萨的种类,返回披萨的制作流程。
1.创建披萨抽象类
/**
1. 披萨抽象类
*/
public abstract class Pizza {
/**
* 披萨名字
*/
protected String name;
/**
* 准备原材料,不同的pizza不一样
*/
public abstract void prepare();
public void bake() {
System.out.println(name + " baking");
}
public void cut() {
System.out.println(name + " cuting");
}
public void box() {
System.out.println(name + " boxing");
}
public void setName(String name) {
this.name = name;
}
}
- 创建对应披萨种类的类,继承披萨抽象类
/**
* 希腊披萨
*/
public class GreekPizza extends com.design.example.factory.simplefactory.pizzastore.pizza.Pizza {
@Override
public void prepare() {
System.out.println(" 给希腊披萨 准备原材料");
}
}
/**
* 奶酪披萨
*/
public class CheesePizza extends com.design.example.factory.simplefactory.pizzastore.pizza.Pizza {
@Override
public void prepare() {
System.out.println(" 给制作奶酪披萨 准备原材料 ");
}
}
- 创建简单工厂类
/**
1. 简单工厂类
*/
public class SimpleFactory {
/**
* 订购披萨(增加orderType,返回对应的Pizza对象)
* @param orderType 输入的披萨种类
* @return
*/
public Pizza createPizza(String orderType) {
System.out.println("使用简单工厂模式");
Pizza pizza = null;
if(orderType.equals("greek")) {
pizza = new GreekPizza();
pizza.setName("希腊披萨");
} else if(orderType.equals("cheese")) {
pizza = new CheesePizza();
pizza.setName("奶酪披萨");
}
return pizza;
}
}
- 调用方法
public static void main(String[] args) {
SimpleFactory simpleFactory = new SimpleFactory();
/**
* 制作奶酪披萨
*/
simpleFactory.createPizza("cheese");
}
通过简单工厂类,根据接收到的披萨类型,返回对应的披萨对象。