Java 深入探究讲解工厂方法模式

目录
  • 1. 工厂方法模式介绍
  • 2. 工厂方法模式类图UML
  • 3. 工厂方法模式角色说明
  • 4. 代码实现
  • 5. 工厂模式再探究
  • 6. 优缺点
  • 7. 应用场景

1. 工厂方法模式介绍

定义:工厂方法模式是对简单工厂模式进一步的抽象化,好处是可以使系统不修改原来代码的情况下引进新的产品,即满足开闭原则。定义一个用于创建对象接口,让子类决定实例化哪一个类,使一个类的实例化延迟到子类中。

2. 工厂方法模式类图UML

3. 工厂方法模式角色说明

抽象工厂(AbstractFactory):提供了创建产品的接口,调用方通过它访问具体工厂的工厂方法来创建产品

具体工厂(ConcreteFactory):实现了抽象工厂定义的方法,完成具体产品的创建

抽象产品(Product):定义了产品的规范,描述产品的主要特征和性能

具体产品(ConcreteProduct):实现了抽象产品的定义的方法,有具体工厂来创建产品,具体工厂和具体产品一一对应

4. 代码实现

工厂方法模式实现:

/**
 * 抽象工厂:提供具体工厂的共有方法
 */
public interface Product {
    public void show();
}
​
public class ConcreteProduct1 implements Product {
    @Override
    public void show() {
        System.out.println("具体产品1展示...");
    }
}
​
public class ConcreateProduct2 implements Product {
    @Override
    public void show() {
        System.out.println("具体产品2展示...");
    }
}
​
​
/**
 * 抽象工厂
 */
public interface AbstractFactory {
    public Product createProduct();
}
​
/**
 * 具体工厂1产生具体产品1
 */
public class ConcreteFactory1 implements AbstractFactory {
    @Override
    public Product createProduct() {
        ConcreteProduct1 concreteProduct1 = new ConcreteProduct1();
        System.out.println("具体工厂1创建具体产品1...");
        return concreteProduct1;
    }

public class ConcreteFactory2 implements AbstractFactory {
    @Override
    public Product createProduct() {
        System.out.println("具体工厂2产生具体产品2...");
        return new ConcreateProduct2();
    }
}

调用方法:

        //获取具体产品1
        Product product = new ConcreteFactory1().createProduct();
        product.show();
​
        Product product1 = new ConcreteFactory2().createProduct();
        product1.show();

使用步骤:

  • 创建抽象产品类,定义产品的公共方法
  • 创建具体产品类(实现抽象产品接口),定义生成的具体产品
  • 创建抽象工厂类,定义具体工厂的公共接口
  • 创建具体工厂类,定义创建对应具体产品实例的方法
  • 调用方调用具体的工厂类的方法,从而创建不同具体产品的实例

5. 工厂模式再探究

解决问题:解决了简单工厂类新增产品需要修改工厂类的方法逻辑问题,即为别开闭原则。

将具体的产品创建退出到工厂类的子类(具体工厂),此时工厂类不再负责所有产品的创建,而是给出具体工厂必须实现的接口,这样工厂方法在添加新的产品的时候,就不需要修改工厂类的逻辑,而是添加了新的工厂子类,符合开闭原则。

6. 优缺点

优点:

  • 灵活性强,对于新产品的创建,只需要多写一个对应的工厂类
  • 用户只需要指导工厂的名称就可以获得所要的产品,不需要指导产品具体创建过程

缺点:

  • 类的个数容易过多,增加了复杂度
  • 每一个工厂只能生产一种产品,次弊端可以使用抽象工厂模式解决

7. 应用场景

客户只关注创建产品的工厂名,不需要知道具体的产品名称

到此这篇关于Java 深入探究讲解工厂方法模式的文章就介绍到这了,更多相关Java 工厂方法 内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java设计模式之工厂方法模式

    概要 设计模式是一门艺术,如果真正了解这门艺术,你会发现,世界都将变得更加优美. 定义 定义一个用于创建对象的接口,让其子类去决定实例化那个类 使用场景 任何使用复杂对象的地方,都可以使用工厂模式 UML 1.抽象工厂 抽象工厂:我们都知道,工厂,一般只有一个作用,那就生产,比如,吉利汽车厂,那就制造吉利汽车,iphone手机制造厂就造iphone等等 所以可以用一个简单的方法概括,就是create(); 2.具体汽车制造厂 具体汽车制造厂:实现了抽象工厂,具有实际的制造汽车的流程和方法等 3.

  • Java设计模式之工厂模式分析【简单工厂、工厂方法、抽象工厂】

    本文实例讲述了Java设计模式之工厂模式.分享给大家供大家参考,具体如下: 一. 简单工厂 先来思考一个问题.我们平时写程序时,会有这种情况,A对象里面需要调用B对象的方法,这时我们使用的一般是new关键字来创建一个B实例,然后调用B实例的方法.这种做法的坏处在于:A类的方法实现直接调用了B类的类名(这种方式也被称为硬编码耦合),一旦系统需要重构:需要使用C类来代替B类时,程序就不得不修改A类代码,如果应用中有100个或者10000个类以硬编码方式耦合了B类,则需要修改100个.10000个地方

  • java编程创建型设计模式工厂方法模式示例详解

    目录 1.什么是工厂方法模式? 2.案例实现 3.JDK中的工厂方法模式 1.什么是工厂方法模式? 工厂方法模式设计方案:  将披萨项目的实例化功能抽象成抽象方法,在不同的口味点餐子类中具体实现. 工厂方法模式:  定义了一个创建对象的抽象方法,由子类决定要实例化的类.工厂方法模式将对象的实例化推迟到子类. 何时使用?  不同条件下创建不用实例时.方法是让子类实现工厂接口. 2.案例实现 假如说,我们现在有这样一个需求:客户在点披萨时,可以点不同口味的披萨,比如北京的奶酪pizza.北京的胡椒p

  • Java设计模式之简单工厂 工厂方法 抽象工厂深度总结

    目录 工厂模式介绍 好处 常见的应用 简单工厂(Simple Factory) 适用场景 角色分配: 应用案例: 优缺点: 简单工厂实现: 工厂方法(Factory Method) 适用场景 角色分配: 应用案例: 优缺点: 工厂方法实现: 抽象工厂(Abstract Factory) 适用场景 角色分配 应用案例: 优缺点: 抽象工厂实现 抽象工厂终极改进(反射+配置文件+简单工厂) 工厂模式介绍 工厂模式也是非常常见的设计模式之一,其属于创建型模式.工厂模式分类:简单工厂(Simple Fa

  • java设计模式之工厂方法详解

    一.概念 工厂方法模式是类的创建模式,又叫虚拟构造子模式(virtual constructor) 或者多态性工厂模式. 二.模式动机 定义一个抽像的工厂,将产品的具体创建工作推迟到抽像工厂的具体子类中,有些产品的创建非常复杂,试想如果将所有具体产品的创建工作都像简单工厂一样放到一个静态工厂方法中,那么这个工厂方法将无比巨大,且当需要扩展增加新的产品时,就必须修改原先的工厂方法,违背了开-闭原则,而工厂方法模式,对于每个具体产品的创建都有一个具体的工厂来创建,如果新增产品,只需要新增一个实现抽像

  • java设计模式学习之工厂方法模式

    工厂方法模式(Factory Method):定义一个用于创建对象的接口,让子类决定实例化哪一个类.工厂方法使一个类的实例化延迟到其子类. 工厂方法模式结构图: 项目需求,创建一个雷锋工厂,大学生可以去帮助别人,志愿者也可以帮助别人做事情. 1:创建一个雷锋类,具有帮助别人扫地,洗衣,买米的功能. package FactoryMethodModel; public class LeiFeng { public void Sweep(){ System.out.println("扫地"

  • Java 深入探究讲解工厂方法模式

    目录 1. 工厂方法模式介绍 2. 工厂方法模式类图UML 3. 工厂方法模式角色说明 4. 代码实现 5. 工厂模式再探究 6. 优缺点 7. 应用场景 1. 工厂方法模式介绍 定义:工厂方法模式是对简单工厂模式进一步的抽象化,好处是可以使系统不修改原来代码的情况下引进新的产品,即满足开闭原则.定义一个用于创建对象接口,让子类决定实例化哪一个类,使一个类的实例化延迟到子类中. 2. 工厂方法模式类图UML 3. 工厂方法模式角色说明 抽象工厂(AbstractFactory):提供了创建产品的

  • Java设计模式编程之工厂方法模式的使用

    定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类. 类型:创建类模式 类图: 工厂方法模式代码 interface IProduct { public void productMethod(); } class Product implements IProduct { public void productMethod() { System.out.println("产品"); } } interface IFactory { publ

  • Java设计模式之工厂方法模式详解

    目录 1.工厂方法是什么 2.如何实现 3.代码实现 4.工厂方法模式的优点 5.拓展 1.工厂方法是什么 众所周知,工厂是生产产品的,并且产品供消费者使用.消费者不必关心产品的生产过程,只需要关心用哪种产品就行. 在Java世界中,工厂方法模式和现实功能类似.工厂即一个工厂类,提供获得对象(产品)的方法(工厂方法).其他类(消费者)需要用到某个对象时,只需调用工厂方法就行,不必new这个对象. 2.如何实现 1)创建产品的抽象类或接口---抽象产品 2)创建具体产品的类---具体产品 3)创建

  • Java 深入探究讲解抽象工厂模式

    目录 1. 抽象工厂模式解决 2. 抽象工厂类图UML 3. 抽象工厂模式的主要角色 4. 代码实现 5. 抽象工厂方法再探究 6. 优缺点 7. 适用示例 解决工厂方法模式的问题:一个具体工厂只能创建一类产品,而实际过程中一个工厂往往需要生成很多的产品,这种可以采用抽象工厂模式. 1. 抽象工厂模式解决 定义:提供一个创建一系列相关或者互相依赖对象的接口,无需指定他们的具体的类,具体的工厂负责实现具体的产品的实例.使一个工厂可以产生多个产品. 2. 抽象工厂类图UML 3. 抽象工厂模式的主要

  • Java 深入探究讲解简单工厂模式

    目录 1. 简单工厂介绍 2. 简单工厂类图UML 3. 简单工厂角色说明 4. 代码实现 5. 优缺点 6. 使用场景 1. 简单工厂介绍 简单工厂有一个具体的工厂类,可以生产不同的产品,属于创建型设计模式. 注意:简单工厂模式 不属于23种设计模式之列 2. 简单工厂类图UML 3. 简单工厂角色说明 简单工厂(SimpleFactory):是简单工厂模式的核心,负责实现创建所有实例的内部逻辑,工厂类的创建产品类的方法可以被外界直接访问,创建所需的产品对象. 抽象产品(Product):是简

  • Java使用设计模式中的工厂方法模式实例解析

    工厂方法模式的定义 工厂方法(Factory Method)模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品. 它包含了如下角色: 抽象产品(Product) 具体产品(ConcreteProduct) 抽象工厂(Factory) 具体工厂(ConcreteFactory) 模式的UML

  • Java设计模式之工厂方法模式实例简析

    本文实例讲述了Java设计模式之工厂方法模式.分享给大家供大家参考,具体如下: 工厂方法模式使用的频率非常高,在我们日常的开发中总能遇见到它的身影.其定义为:Define an interface for creating an object, but let subclass decide which class to instantiate.Factory Method lets a class defer instantiation to subclasses.(定义一个用于创建对象的接口

  • 使用设计模式中的工厂方法模式进行C#编程的示例讲解

    简介 工厂方法模式是什么?为什么要有工厂方法模式,不是有了简单工厂模式了吗?两个模式都有工厂,那有什么不同呢?功工厂方式模式是怎样实现的?OK,带着这些问题,继续看下面文章. 工厂方法模式是对简单工厂模式的扩展,可以说是用来完善简单工厂模式的缺点的,什么缺点呢?在上一篇文章已经说过:扩展性极差.你想一下,如果在简单工厂模式中,如果董事会决定想添加一个玩具生产,叫熊猫玩具,那么全厂该做的事有哪些呢? 1.告诉销售经理:我们准备要添加一个熊猫玩具,可以提供给用户的. 2.到工厂作坊里面,告诉工人要做

  • 详解Java从工厂方法模式到 IOC/DI思想

    前言 简单工厂的本质是选择实现,说白了是由一个专门的类去负责生产我们所需要的对象,从而将对象的创建从代码中剥离出来,实现松耦合.我们来看一个例子: 我们要创建一个文件导出工具 public interface FileOper{ public Boolean exceptFile(String data); } public class XMLFileOp implment FileOper{ public Boolean exceptFile(String data){ System.out.

随机推荐