工厂方法模式

需求:

客户在点披萨时,可以点不同口味的披萨,比如北京的奶酪披萨,北京的胡椒披萨,或者是伦敦的奶酪披萨,伦敦的胡椒披萨

思路1

使用简单工厂模式,创建不同的简单工厂类,比如BJPizzaSimpleFactory、LDPizzaSimpleFactory等等,考虑到项目的规模,以及软件的可维护性,可扩展性并不是特别好

思路2

使用工厂方法模式

工厂方法模式介绍

工厂方法模式设计方案:将披萨项目的实例化功能抽象成抽象方法,在不同的口味点餐子类中具体实现

工厂方法模式:定义一个创建对象的抽象方法,由子类决定要实例化的类,工厂方法模式将对象的实例化推迟到子类

Pizza

BJCheesePizza

BJPepperPizza

LDCheesePizza

LDPepperPizza

OrderPizza

dart 复制代码
package com.baidu.factory.factorymethod.pizzastore.order;
import com.baidu.factory.factorymethod.pizzastore.pizza.Pizza;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public abstract class OrderPizza {
    abstract Pizza createPizza(String orderType);
    public OrderPizza(){
        Pizza pizza = null;
        String orderType;
//        订购披萨的类型
        do{
            orderType = getType();
            pizza = createPizza(orderType);
            pizza.prepare();
            pizza.bake();
            pizza.cut();
            pizza.box();
        }while (true);
    }
    private String getType(){
        try {
            BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("请输入披萨种类:");
            String str =  strin.readLine();
            return str;
        } catch (IOException e) {
            e.printStackTrace();
            return "";
        }
    }
}

BJOrderPizza

LDOrderPizza

PizzaStore

相关推荐
邪修king10 小时前
Re:Linux系统篇(二十六):文件系统(二):Ext 文件系统底层详解:从 inode、块组到软硬链接,结合 Windows 讲透文件管理本质
android·java·linux
Yyyyyy~10 小时前
【java】类和对象
java·开发语言
又见情义10 小时前
RK3568 Android 13 版本号管理实战:基于 ROCKCHIP_BUILD_NUMBER 的定制化方案
android
重生之小比特10 小时前
【Java SE】抽象类和接口
java·开发语言
Lyyaoo.10 小时前
【设计模型】策略模式
java
终端安全笔记10 小时前
iOS 27 强制 TLS 1.2:租赁设备的注册链路会在哪一环断
android·网络·安全·ios·智能手机
mmsx11 小时前
MapLibre 实战 11|用户说"我的地块丢了":一个 sealed class 图层模型,和四个让我重构三版的坑
android·前端·开源
譕痕11 小时前
Idea 集成 智能体开发工具“千问(qwen)”
java·ide·spring·语言模型
用户81818706274611 小时前
第27章 消息丢失/重复消费的全链路排查(生产者→Broker→消费者)
java·后端
索隆zoro11 小时前
Army 对 jOOQ
java·后端