GoF设计模式(一) - 工厂方法模式

设计模式---抽象工厂模式(Abstract Factory)-UML图 (StarUML) 立即下载

前言

1. 定义

工厂方法模式是为了弥补简单工厂模式的不足并且继承它的优点而延生出的一种设计模式,此模式的核心精神是封装类中变化的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂;具体工厂;抽象产品; 具体产品

2. 简介

将类的实例化(具体产品的创建)延迟到工厂类的子类(具体工厂)中完成,即由子类来决定应该实例化(创建)哪一个类 

3. 角色结构

抽象工厂(Creator)角色
是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口(或抽象类)

具体工厂(Concrete Creator)角色
这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。

抽象产品(Product)角色
工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口

具体产品(Concrete Product)角色
这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应。

4. 特性

工厂方法模式保持了简单工厂模式的优点,而且克服了它的缺点。但缺点 是由于每加一个产品,就需要加一个产品工厂的类,增加了额外的开发量。

5. 适用场景

作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式

一个类不知道它所必须创建的对象的类时,一个类希望由它的子类决定所创建的对象时。

 

示例

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 interface ProductionFactory {

    Drink productionDrink();
}

4.具体工厂类的实现(可乐、雪碧)

public class ColaDrinkProductionFactory implements ProductionFactory {

    @Override
    public Drink productionDrink() {
        return new ColaDrinkProduction();
    }
}
public class SpriteDrinkProductionFactory implements ProductionFactory {

    @Override
    public Drink productionDrink() {
        return new SpriteDrinkProduction();
    }
}

5. 工厂调用

ProductionFactory factory = new ColaDrinkProductionFactory();
factory.productionDrink().production();

factory = new SpriteDrinkProductionFactory();
factory.productionDrink().production();

源码

https://download.youkuaiyun.com/download/javanbme/15875969

 

 

Windows Server 2019整机备份与异机还原实战:从虚拟机到物理机的完整迁移指南 本文详细介绍了Windows Server 2019整机备份与异机还原的实战操作,涵盖从虚拟机到物理机的完整迁移流程。通过环境准备、备份策略设计、具体操作步骤及迁移后优化等内容,帮助用户实现系统环境的无缝迁移,特别适用于服务器硬件升级、数据中心迁移等场景。 阅读详情

相关推荐

PCB设计必看:铜皮厚度与载流量的黄金比例(附实用对照表)

本文深入探讨了PCB设计中铜皮厚度与载流量的关键关系,提供了实用的对照表和设计技巧。通过分析基础原理、标准选择策略及常见误区,帮助工程师优化PCB设计,确保电路板的可靠性和安全性。特别适用于需要处理大电流或高频应用的电子设计场景。

milk8的博客 511

实践GoF的设计模式:工厂方法模式

工厂方法模式(Factory Method Pattern)将对象创建的逻辑封装起来,为使用者提供一个简单易用的对象创建接口,常用于不指定对象具体类型的情况下创建对象的场景。

华为云官方博客 1083

基于 LSTM 的船舶轨迹预测,单步预测

基于 LSTM 的船舶轨迹预测,单步预测

fyuhao的博客 1万+

设计模式——工厂方法模式

设计模式——工厂方法模式 一、基本概念 1. 定义 工厂方法模式(英语:Factory method pattern)是一种实现了“工厂”概念的面向对象设计模式。就像其他创建型模式一样,它也是处理在不指定对象具体类型的情况下创建对象的问题。工厂方法模式的实质是“定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行。” 2. 优缺点 优点: 用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程。 灵活性增强,对于新产品的创建,只需多写

海纳百川 355

小程序选项卡以及swiper套用(跨页面)

选项卡tab和swpier之间的套用 其实我之前写过一篇选项卡的切换demo,大家阔以参考一下 小程序多个选项卡切换 那今天写这个demo呢,是因为项目需求,所以仅供参考。 我是拿到了home.wxml的数组下标, 通过url传参的方式去将这个id传到下一个页面, 下一个页面接收以后再将id赋值给对应的tabI或者currentId(swiper 的下标) 实现上一个页面进来以后直接进入对应的页...

Rechal_Mei的博客 3597

别再手动配IP了!保姆级教程:用Cisco Packet Tracer搞定DHCP服务器配置(附实验抓包分析)

本文提供了一份详细的Cisco Packet Tracer DHCP服务器配置教程,帮助用户告别手动分配IP的繁琐过程。通过构建多子网实验环境,逐步指导DHCP地址池设置、客户端测试及协议分析,并分享常见问题排查技巧,让网络配置更高效、更智能。

weixin_42535461的博客 339

工厂方法模式(创建型模式)

工厂方法模式 简单工厂模式不符合开闭原则,工厂方法模式解决了这个问题,也即:简单工厂模式 + 开闭原则 = 工厂方法模式 概念 工厂方法模式同样属于类的创建型模式又被称为多态工厂模式 。工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。 核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是使...

weixin_42067873的博客 464

Confluence安装Drawio插件

记录confluence安装drawio插件步骤

devotedwife的博客 7378

用工厂方法模式设计一个电动自行车工厂的模拟程序(类图+源码)

文章目录01 | 实验内容02 | 实验StarUML画类图03 | 相应源码04 | 实验结果 01 | 实验内容 用工厂方法模式设计一个电动自行车工厂的模拟程序 要求:要为每种品牌的电动自行车提供一个子工厂,如:爱玛工厂专门负责生产爱玛牌电动自行车,雅迪工厂专门负责生产雅迪牌电动自行车。如果今后需要生产小牛牌电动自行车,只需要增加一个新的小牛电动自行车工厂即可,无须修改原有代码,使得整个系统具有更加的灵活性和可扩展性。 按照以上要求设计类图和编写Java源程序。 02 | 实验StarUML画类图

aLinxi的博客 4282

Dify实战:智能邮件工作流配置全解析

本文详细解析了如何利用Dify平台配置智能邮件工作流,实现邮件处理的自动化与智能化。内容涵盖从获取邮箱授权、安装插件、安全配置环境变量,到构建邮件发送工作流、创建调用该工作流的智能体(Agent)的完整步骤,并分享了连接知识库实现智能客服、定时发送日报等进阶自动化场景,旨在帮助用户显著提升邮件处理效率。

t8u9v0w1x的博客 795

【数据集3】高分辨率统计降尺度日值数据集NEX-GDDP的介绍与下载方法

对NEX-GDDP数据集进行介绍和下载说明

WW、forever的博客 2393

《每日编程》----《设计模式》----《一》----工厂方法模式和抽象工厂模式

一直以来都没有好好学习设计模式,最近刚从朋友那拿来一本书《GoF+23种设计模式解析附C++实现源码》,决定把里面的代码全部实现一遍,然后留下笔记。 原文出处:http://blog.youkuaiyun.com/lengzijian/article/details/8020776 1.工厂方法: 一个抽象产品类,派生出多个具体的产品类 一个抽象工厂类,派生出多个具体的工厂类 每个具体的...

数据库天地 157

机器翻译:一文掌握离线翻译库 Argos Translate 的详细使用

Argos Translate是一个开源的离线翻译库,支持多语言互译。它通过独立的翻译包(.argosmodel文件)实现翻译功能,每个包对应特定语言对的翻译任务。安装简单,只需pip安装argostranslate库,并通过命令行或Python API管理翻译包。支持批量处理和长期运行优化性能。对于不支持的语种,可采用桥接翻译或自行训练模型。该库提供CLI工具和Python API,适合集成到各种应用中,还可用于批量文件翻译。主要局限包括缺乏上下文理解、专业领域翻译不精准等。

数据知道的博客 3524

GoF之工厂模式

不属于23种设计模式之一。静态工厂方法模式(原因是其中定义的是一个static 静态的方法,进行工厂处理生产的)。简单工厂模式是工厂方法模式的一种特殊实现。第二种:工厂方法模式(Factory Method):是23种设计模式之一。第三种:抽象工厂模式(Abstract Factory):是23种设计模式之一。创建型(5个):解决对象创建问题。结构型(7个):一些类或对象组合在一起的经典结构行为型(11个):解决类或对象之间的交互问题。

weixin_61635597的博客 1470

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

五万字详解“GoF”的23种设计模式

大家好,我是栗筝i,近期我总结梳理了 “GoF”的 23 种设计模式,并使用 Java 对每种设计模式都进行了伪代码与 Demo 实现,并总结了每种设计模式的应用场景,优缺点,UML图等相关内容,字/词数达到了5万,希望对大家有所帮助~~

栗筝i的博客 4167

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

23种GoF设计模式

GoF(Gang of Four)设计模式是由四位计算机科学家 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著的书籍《Design Patterns: Elements of Reusable Object-Oriented Software》中提出的设计模式

笔记 1371

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

玄子Share 设计模式 GOF 全23种 + 七大设计原则

此文主要内容为,面向对象七大设计原则(OOD Principle),GOF(Gang Of Four)23种设计模式,拓展的两个设计模式,简单工厂模式(Simple Factory Pattern),空对象模式(Null Object Pattern),以及工厂模式与策略模式(Factory And Strategy Pattern)之间的区别,两个设计模式较为相似,细节上需要分清,每个设计模式都分为了八步介绍,先对设计模式进行简单介绍,尽量一句话概述,方便记忆,再以现实生活中的场景举例,抛出问题解决问题

qq_62283694的博客 3442

【Spring】GoF 之工厂模式

Spring 框架中采用的工厂模式简介

秋玄的博客 1566

GoF 的 23 种设计模式

设计模式有两种分类方法:根据模式的目的来分和根据模式的作用范围 1. 根据目的来分 根据模式用来完成什么工作的来划分,这种方式可分为创建型模式、结构型模式、行为模式。 创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 结构型模式:用于描述如何将类或对象按某种布局组成更大的结构,GoF 中提供了代理、适配器、桥接、装饰、外观、享元、组合等 7 种结构型模式。 行为型模式:用于描述类或对象之间怎样相互协

guyuweilove的博客 4021

使用Go实现GoF的23种设计模式(一)

前言 从1995年GoF提出23种设计模式到现在,25年过去了,设计模式依旧是软件领域的热门话题。在当下,如果你不会一点设计模式,都不好意思说自己是一个合格的程序员。设计模式通常被定义为: 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。 从定义上看,设计模式其实是一种经验的总结,是针对特定问题的简洁而优雅的解决方案。既然是经验总结,那么学习设计模式最直接的好处就在于可以站

ruanrunxue的博客 1617

GOF设计模式简介

1.简介 设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可...

yoyoseng的博客 873

【设计模式系列24】GoF23种设计模式总结及软件设计7大原则

设计模式总结及软件设计七大原则前言软件设计7大原则开闭原则(Open-Closed Principle,OCP)里氏替换原则(Liskov Substitution Principle,LSP)依赖倒置原则(Dependence Inversion Principle,DIP)单一职责原则(Single Responsibility Principle,SRP)接口隔离原则(Interface Segregation Principle,ISP)迪米特法则(Law of Demeter,LoD)合成复用原则

zwx900102的博客 2927

设计模式Python版 工厂方法模式

介绍了GOF设计模式中的工厂方法模式,以及工厂方法模式的Python实现示例。

分享、交流、合作 1466

Java设计模式——GoF设计模式

一、GoF设计模式简介 本节内容参考《Java设计模式》@刘伟 编著,清华大学出版社出版,设计模式详解请参考原书。 1.GoF 的 23 种模式一览表 范围/目的 创建型模式 结构型模式 行为型模式 类模式 工厂方法模式 (类)适配器模式 解释器模式 模板方法模式 对象模式 抽象工厂模式 建造者模式 原型模式 单例模式 (对象)适配器模式 桥接模式 组合模式

weixin_40587145的博客 3273

GOF23种设计模式

设计模式

C/C++ 1340

GoF 23种设计模式

作用: 提供一个创建一系列相关对象的接口适用场景: 系统中需要多个系列产品(CPU + Memory + 主板)协同工作本质操作定义多个产品接口定义抽象工厂接口,包含创建多个产品的方法创建多个具体工厂类实现这些接口。

2301_77460724的博客 992
上一篇: 简单工厂模式
下一篇: Mac版 Microsoft Remote Desktop 远程连接windows服务器 拷贝文件
让程序飞
博客等级 码龄10年 8831粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

让程序飞

您的鼓励将是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值