设计模式之:简单工厂

发布时间 2023-08-24 07:30:15作者: 译林

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

 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();
    }

}