工厂方法模式

需求:

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

思路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

相关推荐
立心者016 小时前
SpringBoot中使用TOTP实现MFA(多因素认证)
java·spring boot·后端
枕星而眠16 小时前
C++ STL Map容器完全指南:从有序红黑树到无序哈希表
java·开发语言
Lesile17 小时前
Android:Hilt框架入门 · 在ViewUI和ComposeUI下的应用
android·android jetpack
bbq粉刷匠17 小时前
HashMap 底层原理深度拆解(二):putVal 完整链路解析(懒加载 · 链表遍历 · 尾插法)
java·开发语言·哈希算法
Sam_Deep_Thinking17 小时前
一个靠谱的C端网关服务应该包含什么内容
java·程序员·系统架构
用户4238162290717 小时前
Android 16 WebView 页面顶部挖孔/通知栏不能显示UI问题排查
android
杨运交17 小时前
[055][调度模块]Spring动态任务调度框架的设计与实现
java·后端·spring
白狐_79818 小时前
408 数据结构算法题 01:线性表暴力求解保分指南
java·数据结构·算法
weixin_7275356218 小时前
Loop 已死,Graph 新生:AI 工作流的范式革命
android·人工智能·rxjava
流云鹤18 小时前
03Java学习day(3)
java·学习