iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >工厂方法模式介绍
  • 537
分享到

工厂方法模式介绍

工厂方法模式 2023-08-30 16:08:21 537人浏览 独家记忆
摘要

韩敬海 设计模式(Java版) (一)定义 定义一个创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。 工厂方法涉及的角色有: 1 .抽象工厂角色:工厂方法模式的核心,与应用系统无关,任何创建对象的工厂类必

韩敬海 设计模式(Java版)

(一)定义

定义一个创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。
工厂方法涉及的角色有:
1 .抽象工厂角色:工厂方法模式的核心,与应用系统无关,任何创建对象的工厂类必须实现这个接口。
2. 具体工厂角色:实现了抽象工厂接口,被应用程序调用以创建产品对象。
3. 抽象产品角色:定义产品的共性,实现对产品抽象的定义。
4. 具体产品角色:实现抽象产品角色所声明的接口。

(二)类图

在这里插入图片描述

(二)代码实现

1. 抽象工厂角色

package com.xiaobai.design_pattern.factorymethod.createrole;import com.xiaobai.design_pattern.factorymethod.productrole.Cake;public interface Creator {    Cake factory();}

2. 抽象产品角色

package com.xiaobai.design_pattern.factorymethod.productrole;public interface Cake {        void make();}

3. 具体工厂角色

(1)苹果蛋糕生成工厂
package com.xiaobai.design_pattern.factorymethod.createrole;import com.xiaobai.design_pattern.factorymethod.productrole.AppleCake;import com.xiaobai.design_pattern.factorymethod.productrole.Cake;public class AppleCakeCreator implements Creator{    @Override    public Cake factory() {        return new AppleCake();    }}
(2)草莓蛋糕生成工厂
package com.xiaobai.design_pattern.factorymethod.createrole;import com.xiaobai.design_pattern.factorymethod.productrole.Cake;import com.xiaobai.design_pattern.factorymethod.productrole.StrawberryCake;public class StrawberryCakeCreator implements Creator{    @Override    public Cake factory() {        return new StrawberryCake();    }}

4. 具体产品角色

(1)苹果蛋糕
package com.xiaobai.design_pattern.factorymethod.productrole;import lombok.extern.slf4j.Slf4j;@Slf4jpublic class AppleCake implements Cake{    @Override    public void make() {            log.info("正在制作苹果蛋糕");    }}
(2)草莓蛋糕
package com.xiaobai.design_pattern.factorymethod.productrole;import lombok.extern.slf4j.Slf4j;@Slf4jpublic class StrawberryCake implements Cake {    @Override    public void make() {        log.info("正在制作草莓蛋糕");    }}

5. 测试

package com.xiaobai.design_pattern.factorymethod;import com.xiaobai.design_pattern.factorymethod.createrole.AppleCakeCreator;import com.xiaobai.design_pattern.factorymethod.createrole.Creator;import com.xiaobai.design_pattern.factorymethod.createrole.StrawberryCakeCreator;import com.xiaobai.design_pattern.factorymethod.productrole.AppleCake;import com.xiaobai.design_pattern.factorymethod.productrole.Cake;import org.junit.jupiter.api.Test;public class FactoryMethodTest {    @Test    public void test() {        // 草莓蛋糕生成        Creator creator1 = new StrawberryCakeCreator();        Cake strawberryCake = creator1.factory();        strawberryCake.make();        // 苹果蛋糕生成        Creator creator2 = new AppleCakeCreator();        Cake appleCake = creator2.factory();        appleCake.make();    }}

输出:

45.924 [main] INFO com.xiaobai.design_pattern.factorymethod.productrole.StrawberryCake - 正在制作草莓蛋糕
22:58:45.929 [main] INFO com.xiaobai.design_pattern.factorymethod.productrole.AppleCake - 正在制作苹果蛋糕

(三)总结

1. 工厂方法模式优点

(1)提高扩展性:在增加产品类的情况下,只要适当调整具体的工厂类或扩展一个工厂类,就可以适应变化。
在这里插入图片描述

(2)调用者不需要关心产品的具体实现,只需要关注产品的接口是否发生变化,因为产品的实例化是由工厂负责的。
(3)解耦:高层模块只需要知道产品的抽象类,不需要关注产品的实现类,符合迪米特法则、依赖倒置原则、里氏替换原则。

来源地址:https://blog.csdn.net/qq_39464523/article/details/132032194

--结束END--

本文标题: 工厂方法模式介绍

本文链接: https://www.lsjlt.com/news/383282.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 工厂方法模式介绍
    韩敬海 设计模式(Java版) (一)定义 定义一个创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到其子类。 工厂方法涉及的角色有: 1 .抽象工厂角色:工厂方法模式的核心,与应用系统无关,任何创建对象的工厂类必...
    99+
    2023-08-30
    工厂方法模式
  • java工厂模式的详细介绍
    本篇内容介绍了“java工厂模式的详细介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Java设计模式-工厂模式什么是工厂模式?工厂模式(...
    99+
    2023-06-20
  • C++设计模式中的工厂模式详细介绍
    目录1. 简单工厂模式2. 工厂方法模式3. 抽象工厂模式1. 简单工厂模式 简单工厂模式(Simple Factory Pattern): 是指定义一个工厂类,工厂类中实现一个方法...
    99+
    2024-04-02
  • PHP中的工厂模式的详细介绍
    本篇内容主要讲解“PHP中的工厂模式的详细介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“PHP中的工厂模式的详细介绍”吧!工厂模式是一种类,它具有为您创建对象的某些方法。您可以使用工厂类创建...
    99+
    2023-06-17
  • Java工厂模式的使用细则介绍
    目录工厂模式简单工厂模式工厂方法模式抽象工厂模式工厂模式 工厂模式顾名思义就是生产实例的工厂,使用工厂模式不会在程序中使用new关键字创建实例。而是将创建对象的细节隐藏,对外提供统一...
    99+
    2023-02-21
    Java工厂模式 Java工厂设计模式 设计模式工厂模式
  • Java中工厂模式的介绍及应用
    本篇内容介绍了“Java中工厂模式的介绍及应用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!介绍意图:提供一个创建一系列相关或相互依赖对象的...
    99+
    2023-06-05
  • Java工厂模式之简单工厂,工厂方法,抽象工厂模式详解
    目录1、简单工厂模式1.定义2.代码案例3.适用场景4.优缺点2、工厂方法模式1.定义2.代码案例3.适用场景4.优缺点3、抽象工厂模式1.定义2.代码案例3.适用场景4.优缺点4、...
    99+
    2024-04-02
  • 在Java中轻松使用工厂设计模式介绍
    目录了解工厂设计模式的先决条件超类与子类/父类与子类别挑战什么是工厂设计模式创建工厂设计类工厂设计模式的好处前言: 工厂设计模式或工厂方法设计模式。它是一种广泛使用且易于理解的设计模...
    99+
    2024-04-02
  • C#实现工厂方法模式
    场景:简单工厂时候,我设计了一个场景,有三种剑去打怪,这时候,需求变化了,我三种剑变成了,匕首、剑以及木棒,想要用工厂方法来实现,怎么弄? 1.上文讲过简单工厂模式,它的最大优点在于...
    99+
    2024-04-02
  • Java简单工厂,工厂方法,抽象工厂模式怎么实现
    这篇文章主要讲解了“Java简单工厂,工厂方法,抽象工厂模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java简单工厂,工厂方法,抽象工厂模式怎么实现”吧!1、简单工厂模式1.定...
    99+
    2023-06-29
  • Java设计模式之工厂方法和抽象工厂
    全网最详细的工厂设计模式,本文主要是创建型设计模式中的工厂方法和抽象工厂,先由传统实现方式引出问题,接着对代码改进到简单工厂,后扩展到工厂方法,最后是抽象工厂模式,文中包括概念理解和...
    99+
    2024-04-02
  • JavaScript抽象工厂及工厂方法模式是什么
    这篇文章主要介绍“JavaScript抽象工厂及工厂方法模式是什么”,在日常操作中,相信很多人在JavaScript抽象工厂及工厂方法模式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,...
    99+
    2024-04-02
  • Java设计模式之工厂方法模式详解
    目录1.工厂方法是什么2.如何实现3.代码实现4.工厂方法模式的优点5.拓展1.工厂方法是什么 众所周知,工厂是生产产品的,并且产品供消费者使用。消费者不必关心产品的生产过程,只需要...
    99+
    2024-04-02
  • JAVA设计模式之工厂模式(三种工厂模式)
    1.工厂模式可以分为三类: 简单工厂模式(Simple Factory) 工厂方法模式(Factory Method) 抽象工厂模式(Abstract Factory) 简单工厂其实不是一个标准的的设计模式。GOF 23 种设计模式...
    99+
    2023-09-04
    设计模式
  • 简单工厂模式和抽象工厂模式
    简单工厂模式,顾名思义,就是比较简单的一个模式,并且使用在业务比较简单的情况下,且具体产品不需要扩张它由三种角色组成工厂类,是这个模式的核心,含有一定的逻辑和判断,根据逻辑不同,产生具体的工厂产品抽象产品:具体产品的父类具体产品:工具抽象产...
    99+
    2023-06-02
  • golang实现简单工厂、方法工厂、抽象工厂三种设计模式
    1、简单工厂: 第一步:创建一个文章接口,需要实现阅读和写作的功能。 type Article interface { ReadArticle() string WriteArt...
    99+
    2024-04-02
  • Java设计模式之简单工厂 工厂方法 抽象工厂深度总结
    目录工厂模式介绍好处常见的应用简单工厂(Simple Factory)适用场景角色分配:应用案例:优缺点:简单工厂实现:工厂方法(Factory Method)适用场景角色分配:应用...
    99+
    2024-04-02
  • php工厂方法模式如何实现
    本篇内容介绍了“php工厂方法模式如何实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!PHP工厂方法模式的好处是:核心类只需要关注工厂类的...
    99+
    2023-06-29
  • Java工厂方法模式怎么实现
    这篇文章主要讲解了“Java工厂方法模式怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java工厂方法模式怎么实现”吧!一、什么是工厂方法模式?工厂方法模式:也叫虚拟构造器模式或者多...
    99+
    2023-06-29
  • C#如何实现工厂方法模式
    本篇内容介绍了“C#如何实现工厂方法模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!场景:简单工厂时候,我设计了一个场景,有三种剑去打怪,...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作