Java教程

详解Java工厂模式(抽象工厂/简单工厂/工厂方法)

本文主要是介绍详解Java工厂模式(抽象工厂/简单工厂/工厂方法),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

创建型模式

  • 创建型模式关注对象的创建过程,它将对象的创建和使用分离,在使用对象时无须知道对象的创建细节。这样可以降低系统的耦合度。使得相同的创建过程可以多次复用,且修改二者中的一个对另一个几乎不造成任何影响或很少的影响。

创建者模式概述

为了让大家更生动的理解,下面我们来举个典型的栗子:

  • 如果想吃苹果,至少有两种获取苹果的方式,第一种方式是自己种苹果树,等待苹果树开花结果,在经过若干天漫长的等待后再慢慢品尝自己的劳动成果,第二种方式是由专门的苹果种植户或农场将苹果种好,放在超市或水果摊的架子上自己选购,一手掏钱一手提货,只要有钱马上就可以吃到苹果。
  • 对于这两种方式,一般情况下人们会选择哪种呢?毫无疑问,选择第二种的人会更多,毕竞种苹果的是少数,吃苹果的是多数。为什么呢?其一,因为苹果由专门的种植户和农场来生产,有一套规范的生产流程,其培育过程更加专业﹔其二,对于用户来说,只需要通过简单的方式即可获得苹果,无须关心其种植过程,极大提高用户获取苹果的效率;其三,由于将苹果的生产和苹果的消费分离,相同的生产者可以将苹果卖给不同的消费者,同一个消费者也可以货比三家,从不同的生产者那里购买苹果,增强了灵活性。既然有这么多优点,还有必要每个人自己种苹果自己吃吗?这个答案不言而喻。

在这里插入图片描述

  • 在面向对象软件开发过程中也经常存在类似自己种苹果还是直接去买苹果的情况,如需要某个类的一个实例化对象,是在代码中直接使用new关键字来进行实例化,还是通过已有的实例工厂间接获取对象实例?而创建型模式正是为解决这类问题而诞生的,不同的创建型模式从不同角度解决了苹果从何而来的问题。

创建者模式简介

  • 创建型模式主要包括如下6种模式。
模式名称定义概述
简单工厂模式根据传人的参数即可返回所需的对象,而不需要知道具体类的类名根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个公共的父类和公共的方法。简单工厂模式不属于GoF设计模式
工厂方法模式定义一个用于创建对象的接口-让子类决定将哪一个类实例化。工厂方法模式使一个类的实例化延迟到其子类将基一类对象的创建过程封装在单独的类中,通过引入抽象层的方式来使得对象的创建和使用更为灵活
抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类在一个类中可以创建多个不同类型的对象,这些对象所对应的类型都源于抽象层,使得系统具有极佳的扩展性和灵活性
建造者模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示一步一步构造一个由多个部分组成的复杂对象
原型模式用原型实例指定创建对象的种类,并且通过复制这个原型来创建新的对象通过复制已有对象创建出相似的其他对象
单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点控制系统中所创建的对象实例的个数

下面将带大家来学习这些巧妙的模式,并将他们运用到实际开发中,让大家更加轻松的吃到 “苹果


Java工厂设计模式

  • 创建型模式
    • 创建者模式概述
    • 创建者模式简介
  • 简单工厂模式
    • 简介
    • 模式结构
    • 练习案例
      • 案例1
      • 案例2
    • 简单工厂模式总结
  • 工厂方法模式
    • 简介
    • 模式结构
    • 练习案例
      • 案例1
    • 工厂方法模式总结
  • 抽象工厂模式
    • 简介
    • 模式结构
    • 练习案例
    • 案例1
    • 抽象工厂模式总结

开始学习之前先带大家了解创建型模式的概念

在这里插入图片描述


简单工厂模式

  • 工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

  • 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

简介

  • 简单工厂模式又称为静态工厂方法模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

  • 如下图所示,用户无须知道苹果,橙﹑香蕉如何创建,只需要知道水果的名字则可得到对应的水果。

在这里插入图片描述

  • 一个软件系统可以提供多个外观不同的按钮(如圆形按钮、矩形按钮﹑菱形按钮等),这些按钮都源自同一个基类,不过在继承基类后不同的子类修改了部分属性从而使得它们可以呈现不同的外观,如果我们希望在使用这些按钮时,不需要知道这些具体按钮类的名字,只需要知道表示该按钮类的一个参数,并提供一个调用方便的方法,把该参数传入方法即可返回一个相应的按钮对象,此时,就可以使用简单工厂模式。

模式结构

简单工厂模式结构比较简单,其核心是工厂类。包含如下角色。

  1. Factory(工厂角色)

工厂角色即工厂类,它是简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。在工厂类中提供了静态的工厂方法 factoryMethod() ,它返回一个抽象产品类Product,所有的具体产品都是抽象产品的子类。

  1. Product(抽象产品角色)

抽象产品角色是简单工厂模式所创建的所有对象的父类,负责描述所有实例所共有的公共接口,它的引入将提高系统的灵活性,使得在工厂类中只需定义一个工厂方法,因为所有创建的具体产品对象都是其子类对象。

  1. ConcreteProduct(具体产品角色)

具体产品角色是简单工厂模式的创建目标,所有创建的对象都充当这个角色的某个具体类的实例。每一个具体产品角色都继承了抽象产品角色。需要实现定义在抽象产品中的抽象方法。

结构分析

这篇关于详解Java工厂模式(抽象工厂/简单工厂/工厂方法)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!