有一个案例来推导出简单工厂模式:

Pizza 类
/**
* @description: 披萨类(包含基础的 准备原料、制作、切割、打包等操作)
* @author: abel.he
* @date: 2023-08-24
**/
public class Pizza {
/**
* pizza名称
*/
private String pizzaName;
/**
* 准备原材料
*/
public void prepare(){
System.out.println(pizzaName + ": 准备原材料");
}
/**
* 烘烤
*/
void bake() {
System.out.println(pizzaName + ": 烘烤");
}
/**
* 剪切
*/
void cut() {
System.out.println(pizzaName + ": 剪切");
}
/**
* 打包
*/
void box() {
System.out.println(pizzaName + ": 打包");
}
public void setPizzaName(String pizzaName){
this.pizzaName = pizzaName;
}
}
ChessPizza类:
/**
* @description: 芝士披萨
* @author: abel.he
* @date: 2023-08-24
**/
public class ChessPizza extends Pizza {
}
GreekPizza类
/**
* @description: 希腊披萨
* @author: abel.he
* @date: 2023-08-24
**/
public class GreekPizza extends Pizza{
}
OrderPizza
/**
* @description: 蛋糕店
* @author: abel.he
* @date: 2023-08-24
**/
public class OrderPizza {
public static void main(String[] args) {
Pizza pizza = null;
do {
String type = getType();
if ("chess".equals(type)) {
pizza = new ChessPizza();
pizza.setPizzaName("芝士披萨");
} else if ("greek".equals(type)) {
pizza = new GreekPizza();
pizza.setPizzaName("希腊披萨");
} else {
System.out.println("订单结束");
break;
}
pizza.prepare();
pizza.bake();
pizza.cut();
pizza.box();
} while (true);
}
private static String getType() {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入想制作的披萨");
return scanner.nextLine();
}
}