java简单工厂模式入门

 更新时间:2021年07月21日 11:48:33   作者:让程序飞  
下面小编就为大家带来一篇java工厂模式入门文章。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

前言

定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类

在简单工厂模式中用于被创建实例的方法通常为静态(static)方法,因此简单工厂模式又被成为静态工厂方法(Static Factory Method) 只需要传入一个正确的参数,就可以获取所需要的对象,而无需知道其实现过程

试例

以饮料加工厂为例

1. 创建饮料接口(或者抽象类)

public interface Drink {
    void production();
}

2. 具体饮料类的实现(可乐、雪碧)

public class ColaDrinkProduction implements Drink{
    @Override
    public void production() {
        System.out.println("生产可乐饮料");
    }
}
public class SpriteDrinkProduction implements Drink{
    @Override
    public void production() {
        System.out.println("生产雪碧饮料");
    }
}

3. 饮料生产工厂类

public class DrinkProductionFactory {
    public static Drink productionDrink(String type){
        switch (type){
            case "cloa":
                return new ColaDrinkProduction();
            default:
                return new SpriteDrinkProduction();
        }
    }
}

4. 工厂调用

需要什么对象传入对应的参数即可

Drink cloa = DrinkProductionFactory.productionDrink("cloa");
 cloa.production();

特点

它是一个具体的类,非接口 抽象类。有一个重要的调用方法(productionDrink),通常是静态的,利用if或者 switch创建产品并返回

缺点

扩展性差 我想增加一种饮料,除了新增一个饮料产品类,还需要修改工厂类方法(增加‘Case'的分支条件) 这样来说 不但对扩展开放了,对修改也开放了 违背了开放-封闭原则

总结

本篇文章就到这里了,希望能给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • springboot自定义starter实现过程图解

    springboot自定义starter实现过程图解

    这篇文章主要介绍了springboot自定义starter实现过程图解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • mybatis中方法返回泛型与resultType不一致的解决

    mybatis中方法返回泛型与resultType不一致的解决

    这篇文章主要介绍了mybatis中方法返回泛型与resultType不一致的解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • Java中的Spring Security配置过滤器

    Java中的Spring Security配置过滤器

    这篇文章主要介绍了Java中的Spring Security配置过滤器,文章通过围绕文章主题的相关资料展开详细内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • Java编程实现springMVC简单登录实例

    Java编程实现springMVC简单登录实例

    这篇文章主要介绍了Java编程实现springMVC简单登录实例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Java更新调度器(update scheduler)的使用详解

    Java更新调度器(update scheduler)的使用详解

    Java更新调度器是Java中的一个特性,可以自动化Java应用程序的更新过程,它提供了一种方便的方式来安排Java应用程序的更新,确保其与最新的功能、错误修复和安全补丁保持同步,本文将深入介绍如何使用Java更新调度器,并解释它对Java开发人员和用户的好处
    2023-11-11
  • 简单易用的Spring Boot邮件发送demo

    简单易用的Spring Boot邮件发送demo

    本文将介绍如何使用Spring Boot发送邮件,我们将演示如何配置SMTP邮件服务器,创建一个邮件模板,以及如何使用JavaMailSender发送邮件,我们还将介绍如何测试我们的邮件发送代码
    2023-12-12
  • 在deepin上如何使用Fleet开发SpringBoot 3.0.0项目

    在deepin上如何使用Fleet开发SpringBoot 3.0.0项目

    这篇文章主要介绍了在deepin上使用Fleet开发SpringBoot 3.0.0项目的过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • Java中简单实用Quartz概述

    Java中简单实用Quartz概述

    Quartz是一个开源的Java调度框架,可以用来实现在指定的时间或时间间隔触发任务执行的功能,这篇文章主要介绍了Java中简单实用Quartz,需要的朋友可以参考下
    2023-02-02
  • 页面的缓存与不缓存设置及html页面中meta的作用

    页面的缓存与不缓存设置及html页面中meta的作用

    这篇文章主要介绍了页面的缓存与不缓存设置及html页面中meta的作用的相关资料,需要的朋友可以参考下
    2016-05-05
  • spring security自定义认证登录的全过程记录

    spring security自定义认证登录的全过程记录

    这篇文章主要给大家介绍了关于spring security自定义认证登录的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-12-12

最新评论