一文教你弄懂Java设计模式之简单工厂模式:图解+图表库代码实例

文章目录

      • 详解Java设计模式之简单工厂模式
        • 创建型模式
        • 简单工厂模式
          • 定义
          • 模式结构
          • 模式UML类图示例
          • 模式实现(以上面水果工厂图示为例,未使用配置文件)
          • 实例分析
            • 回顾Java创建对象的集中方法
            • 对象的创建与使用分离的其他好处
          • 什么时候不需要工厂
          • 简单工厂模式的简化
          • 模式优点
          • 模式缺点
          • 模式适用环境

详解Java设计模式之简单工厂模式

创建型模式

  • Creational Pattern 关注对象的创建过程

  • 该模式对类的实例化过程进行了抽象,能够将软件模块中对象的创建和对象的使用相分离,对用户隐藏了类的实例创建细节

  • 该模式描述如何将对象的创建与使用相分离,让用户在使用对象时无需关注对象创建过程,从而降低系统的耦合度让设计方案易于修改和扩展

  • 关注点

    • 创建什么what
    • 谁来创建who
    • 何时创建when
  • 创建模式一览

    一文教你弄懂Java设计模式之简单工厂模式:图解+图表库代码实例

    这张图片可以较为清晰的表达出简单工厂模式相关模式

  • 基本实现流程

    • 具体产品类:将需要创建的各种不同的产品对象的相关代码封装到具体的产品类中。可以对应到上图的苹果、香蕉、橘子
    • 抽象产品类:即将具体产品类公共的代码抽象和提取后封装在一个抽象产品类中,也就是具体产品类的父类,上图中对应水果
    • **工厂类:**提供一个工厂类用于创建各种产品,在工厂类中会提供一个创建产品的工厂方法,该方法根据所传入的参数的不同确定要创建什么具体产品
    • **客户端:**只需要调用工厂类的工厂方法并传入相应的参数即可得到一个产品对象
定义

简单工厂模式(Simple Factory Pattern):定义一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类

  • 其他

    • 工厂类中的工厂方法(即创建实例的方法)通常都是静态方法,也被称为静态工厂方法模式
    • 需要创建什么实例,就只需要传入一个正确的参数即可,就可以获取所需要的对象,无需关注创建细节。也被称为参数化的工厂模式
模式结构
  • Factory(工厂角色)
  • Product(抽象产品角色)
  • ConcreteProduct(具体产品角色)
模式UML类图示例

一文教你弄懂Java设计模式之简单工厂模式:图解+图表库代码实例
  • 抽象产品类

  • 具体产品类

  • 客户端

  • 结果显示

  • 实例分析

    某软件公司要基于Java语言开发一套图表库,该图表库可以为应用系统提供多种不同外观的图表,例如柱状图(HistogramChart)、饼状图(PieChart)、折线图(LineChart)等。该软件公司图表库设计人员希望为应用系统开发人员提供一套灵活易用的图表库,通过设置不同的参数即可得到不同类型的图表,而且可以较为方便地对图表库进行扩展,以便能够在将来增加一些新类型的图表。
    现使用简单工厂模式来设计该图表库。

    简单工厂模式实现

    一文教你弄懂Java设计模式之简单工厂模式:图解+图表库代码实例
  • 配置文件内容

  • 客户端代码改写

    package csu.edu.cn.designpattern.simplefactorypattern;import csu.edu.cn.designpattern.util.XMLUtil;/** * @Author: PlusHuang * @Date: 2021/11/28 16:03 * @Theme: 客户端 * @Description: */public class Client {    public static void main(String[] args) {//现在想让该水果工厂给我生产水果给我吃!Fruit fruit;fruit = Factory.createFruit(XMLUtil.getFruitType());System.out.println(fruit.toString());fruit.eat();    }}运行结果正在创建--------来源:PlusHuang
                                                            

    声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

  • 上一篇 2021年10月25日
    下一篇 2021年10月25日

    相关推荐