首页 > 编程语言 >Java 简单工厂模式

Java 简单工厂模式

时间:2023-12-27 13:46:37浏览次数:37  
标签:Java pizzaName void System 模式 工厂 class public Pizza

需求:
Pizza 有以下几个方法
prepare() 准备食材
bake() 烘焙
cut() 切割
box() 装盒

现在有两种披萨,第一种是ApplePizza,第二种是CheesePizza。 PizzaStore有点单系统Order(pizzaType) 根据pizza type去制作对应的Pizza。

Pizza的抽象类

public abstract class Pizza {

    String pizzaName = null;

    public abstract void prepare();

    public void bake(){
        System.out.println(pizzaName+" 开始烘焙");
    }

    public void  cut(){
        System.out.println(pizzaName+" 开始切割");
    }

    public void  box(){
        System.out.println(pizzaName+" 开始打包");
    }

}

具体实现类

public class ApplePizza extends Pizza{


    @Override
    public void prepare() {
        System.out.println(pizzaName+" 准备原材料");
    }

    public ApplePizza(){
        pizzaName = "Apple披萨";
    }

}


public class CheesePizza extends Pizza{

    @Override
    public void prepare() {
        System.out.println(pizzaName+" 准备原材料");
    }

    public CheesePizza(){
        pizzaName = "Cheese披萨";
    }
}

工厂类去实例化Pizza类

public class SimplePizzaFactory {

    Pizza pizza=null;

    public Pizza createPizzaInstance(String orderType){

        if (orderType.equalsIgnoreCase("apple")){
            pizza = new ApplePizza();
        }else if (orderType.equalsIgnoreCase("cheese")){
            pizza = new CheesePizza();
        }
        return pizza;
    }

}

order系统把type传递给工厂类

public class OrderPizza {

    public OrderPizza(String orderType){

        SimplePizzaFactory simplePizzaFactory = new SimplePizzaFactory();
        Pizza pizzaInstance = simplePizzaFactory.createPizzaInstance(orderType);

        pizzaInstance.prepare();
        pizzaInstance.bake();
        pizzaInstance.cut();
        pizzaInstance.box();
    }
}

披萨店把用户需求传递给order系统

public class PizzaStore {
    public static void main(String[] args) {
        new OrderPizza("Apple");
        new OrderPizza("Cheese");
    }
}

输出结果

标签:Java,pizzaName,void,System,模式,工厂,class,public,Pizza
From: https://www.cnblogs.com/yan061/p/17930371.html

相关文章

  • 无涯教程-Java加密 - 创建签名
    数字签名使无涯教程可以验证签名的作者,日期和时间,并对邮件内容进行身份验证。它还包括用于其他功能的身份验证功能。创建数字签名现在学习如何创建数字签名。您可以按照以下步骤使用Java创建数字签名。步骤1-创建KeyPairGenerator对象KeyPairGenerator类提供getInstan......
  • Java必知必会系列:机器学习与数据挖掘
    1.背景介绍机器学习和数据挖掘是计算机科学领域的两个重要分支,它们在现实生活中的应用也越来越广泛。机器学习是人工智能的一个分支,它研究如何让计算机自动学习和理解数据,从而实现对未知数据的预测和分类。数据挖掘则是对大量数据进行分析和挖掘,以发现隐藏在数据中的模式和规律,从而......
  • Java应用怎么调优?【转】
    一、Java应用调优的关键指标调优之前首先我们要知道怎样才算是“优”,不能笼统的说我的程序性能很好,所以就需要有一个具体的指标来衡量性能情况,而在JVM里面衡量性能两个指标分别“吞吐量”和“停顿时间”。吞吐量程序运行过程中执行两种任务,分别是执行业务代码和进行垃圾回收,吞......
  • JavaScript事件
    事件JavaScript事件,就是用户或浏览器本身的某种行为,一般是用户对页面的一些动作引起的,比如用户的点击某个链接、在文本框中输入文本等。绑定对应的事件方法一:直接在元素上面添加一个事件属性语法:方法二:在js中找到dom添加事件语法:方法三:使用addEventListener 语法:注意......
  • Java多线程:状态转移详解
    Java中的线程在其生命周期内会经历不同的状态。理解这些状态以及它们之间的转换对于掌握多线程编程至关重要。本文将详细介绍Java线程的状态以及它们之间的转换机制。线程生命周期状态根据Java语言规范和java.lang.Thread.State枚举定义,线程的状态主要分为以下几种:新建(NEW):创建后尚......
  • 【Java核心基础】一文带你了解Java中构造方法的重要作用!
    构造方法是Java中用于初始化对象状态的特殊方法,与类同名且无返回类型,创建对象时自动调用,可重载以提供灵活性;若未定义,编译器提供默认构造方法,它可加访问修饰符,可用super()调用父类构造方法,构造方法不可继承或直接调用,可用于依赖注入。定义在Java中,构造方法专门负责初始化新创......
  • 无涯教程-Java加密 - 获取密钥
    在本章中,无涯教程将学习如何使用Java密码术从密钥库中检索密钥。要从密钥库中检索密钥,请遵循以下步骤。步骤1-创建KeyStore对象java.security包的KeyStore类的getInstance()方法接受一个表示密钥库类型的字符串值,并返回一个KeyStore宾语。如下所示,使用此方法创建KeyS......
  • Java实现单例模式
    饿汉式静态常量饿汉式的优点是:在类装载的时候就完成实例化,没有达到LazyLoading的效果,并且避免了线程同步问题。它的缺点是:如果从始至终从未使用过这个实例,则会造成内存的浪费。publicclassadaDemo3{publicstaticvoidmain(String[]args){Singletonins......
  • flutter常用的设计模式
    单例模式(SingletonPattern):确保一个类只有一个实例,并提供一个全局访问点。工厂模式(FactoryPattern):定义一个创建对象的接口,但让子类决定具体实例化哪个类;常用于创建组件、复杂对象等场景。抽象工厂模式(AbstractFactoryPattern):提供一个创建一系列相关或相互依赖对象的接口,而......
  • java中属性和变量的区别与final和抽象类
    属性和变量的区别变量必须要有初始值;属性可以没有初始值;变量的范围只在当前大括号内有效;属性是对象在哪里使用就在哪里有效;属性的作用范围要比变量的大一些属性和变量publicclassstudy01{ publicstaticvoidmain(String[]args){ //这是一个变量Stringnam......