GoF23种设计模式之创建型模式之工厂方法模式

解决MATLAB2020B关于找不到vs2019C++编译器问题 阅读详情

一、概述

        定义一个用于创建对象的接口,让子类去决定实例化哪个类。工厂方法将一个类的实例化延迟至其子类。

二、适用性

1.当一个类不知道它所必须创建的对象的类的时候。

2.当一个类希望由其子类来指定它所创建的对象的时候。

3.当类将创建对象的职责委托给多个帮助子类的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。

三、参与者

1.Product:定义工厂方法所创建的对象的接口。

2.ConcreteProduct:实现Product接口。

3.Creator:声明工厂方法,该方法返回一个Product类型的对象。Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。

4.ConcreteCreator:重定义工厂方法以返回一个ConcreteProduct实例。

四、类图


五、示例

Product

package cn.lynn.factorymethod;

public interface IWork {

    public void doWork();

}
ConcreteProduct
package cn.lynn.factorymethod;

public class ManagerWork implements IWork {

    @Override
    public void doWork() {
        System.out.println("经理审批流程!");
    }

}
package cn.lynn.factorymethod;

public class EmployeeWork implements IWork {

    @Override
    public void doWork() {
        System.out.println("员工处理事情!");
    }

}
Creator
package cn.lynn.factorymethod;

public interface IWorkFactory {

    public IWork getWork();

}
ConcreteCreator
package cn.lynn.factorymethod;

public class ManagerWorkFactory implements IWorkFactory {

    @Override
    public IWork getWork() {
        return new ManagerWork();
    }

}
package cn.lynn.factorymethod;

public class EmployeeWorkFactory implements IWorkFactory {

    @Override
    public IWork getWork() {
        return new EmployeeWork();
    }

}
Test
package cn.lynn.factorymethod;

public class Test {

    public static void main(String[] args) {
        IWorkFactory employeeWorkFactory = new EmployeeWorkFactory();
        employeeWorkFactory.getWork().doWork();
        
        IWorkFactory managerWorkFactory = new ManagerWorkFactory();
        managerWorkFactory.getWork().doWork();
    }

}
Result
员工处理事情!
经理审批流程!

【AI智能体】Coze 打通MySql实现数据报表展示应用搭建详解 Coze 打通MySql实现数据报表展示应用搭建详解 阅读详情

相关推荐

halcon C++编程 第4讲 HObject/HImage Mat相互转换(tcy)

网上有很多相互转换程序,但并不知那个正确,本文对相互转换后的结果和原对象比较是否相同判断转换是否正确。经测试ok.本文包括转换代码及测试是否相同。 1.转换程序: /************************************ HObject转为Mat:time:2021/3/16 V1.0 *************************************/ cv::Mat HalconClass::HObjectToMat(const HalconCpp::HObject&..

tcy-阿春 4932

GoF 的 23 种设计模式

文章目录[学习地址 —— 不错的学习网站](http://c.biancheng.net/view/8374.html) : http://c.biancheng.net/view/8374.html创建型模式(5种)单例模式原型模型工厂模式简单工厂模式(不算23种里面)工厂方法模式抽象工厂模式建造者模式结构型模式(7种)代理模式适配器模式桥接模式装饰器模式外观模式享元模式组合模式行为型模式(11种)模板方法模式策略模式命令模式责任链模式状态模式观察者模式中介者模式迭代器模式访问者模式备忘录模式解释器模式一

py今天刷题了吗 1275

C语言获取硬件信息(CPU序列号,硬盘序列号,网卡IP、MAC地址、是否插入网线)

本文主要介绍Linux和Windows下使用C语言获取各种硬件信息,包括CPU序列号、硬盘序列号、网卡信息(包括网卡名字、IP地址、MAC地址、网卡是否插入网线等)。

叶落花枯的博客 9378

万字详解 GoF 23 种设计模式(多图、思维导图、模式对比),让你一文全面理解

1. 设计模式概念及原则 1.1. 什么是设计模式? 设计模式(Design pattern): 是软件开发经验的总结,是软件设计中常见问题的典型解决方案。每个模式都像一个蓝图,您可以自定义以解决代码中的特定设计问题。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。 1995 年,GoF(Gang of Four,四人组)合作出版了**《Design Patterns: Elements of Reusable Object-Oriented Software》*

penriver的博客 2万+

基于计算机视觉的Windows自动化工具openclaw-win:从原理到实战

计算机视觉与自动化技术正深刻改变人机交互方式,其核心在于让机器具备“感知-决策-执行”的能力。通过图像采集与处理算法,程序可以识别屏幕上的特定元素;结合模拟输入技术,便能自动执行点击、拖拽等操作,形成完整的自动化闭环。这一技术栈在软件测试、数据采集、重复性办公任务等领域具有重要价值,能够显著提升工作效率。开源项目openclaw-win正是这一理念的工程实践,它整合了图像识别与模拟操作模块,为开发者提供了一个研究自动化技术的具体样本。项目涉及模板匹配、坐标计算等关键技术点,并需处理屏幕适配、操作延迟等实际问

weixin_28745975的博客 329

MTK metadata中AF模块的移除与配置调整

本文详细介绍了在MTK平台Camera开发中如何移除metadata中的AF(自动对焦)模块。通过系统清理MTK_CONTROL_AF_REGIONS、MTK_CONTROL_MAX_REGIONS等关键配置项,并调整对焦模式及硬件特性声明,确保定制化设备在禁用自动对焦功能后的稳定运行。

q1w3e5r7t9y的博客 570

GOF 23种常用设计模式

GOF 23种常用设计模式

QG 2592

UVM验证中,为什么我的pack_bytes()返回长度是0?手把手教你排查自定义do_pack函数

本文深入解析UVM验证中pack_bytes()返回长度为0的常见原因及系统排查方法。从UVM打包机制原理出发,详细列举了super.do_pack()缺失、field automation冲突等典型问题,并提供动态数组处理、位宽计算等进阶调试技巧,帮助开发者快速定位和解决自定义do_pack函数问题。

weixin_42523693的博客 127

23种设计模式(GOF)

23种设计模式(GOF)

gb4215287的博客 2036

AICodeing:AI驱动的全栈开发革命

作为阿里/字节跳动的资深Java工程师,我们正站在研发效能革命的临界点上。本文将深入探讨如何利用AI技术重构全栈开发流程,实现从需求到上线的量子级提速。

weixin_43290370的博客 1134

方差迭代计算公式

方差迭代计算过程推导术语约定递推公式过程推导 术语约定 (1)En=1n∑i=1nxi E_n =\frac{1}{n} \sum_{i=1}^{n}x_i \tag{1} En​=n1​i=1∑n​xi​(1) (2)F(n)=∑i=1n(x2−En) F(n) = \sum_{i=1}^{n}{(x^2-E_n)} \tag{2} F(n)=i=1∑n​(x2−En​)(2) (3)V(n)...

weixin_44479136的博客 7921

GoF23种设计模式简单介绍

这些设计模式为软件开发人员提供了一种解决常见问题的框架和思维模式。选择适当的设计模式可以提高代码的可读性、可维护性和可扩展性,并促进代码重用和灵活性。每种设计模式都有其特定的应用场景和优缺点,开发人员应根据实际需求和情况选择适合的模式。GoF(Gang of Four)是指设计模式的四位作者,他们在《设计模式:可复用面向对象软件的基础》一书中介绍了23种常见的设计模式。主要分为三大类:创建型模式、结构型模式和行为型模式。

weixin_51465537的博客 1347

从传感器到执行-智能家居 Agent 的感知-决策-执行闭环

本文提出了一种面向智能家居的感知型Agent架构,通过"感知-决策-执行"的闭环系统实现智能化控制。感知模块整合多源传感器数据,决策模块基于规则或机器学习模型生成控制策略,执行模块完成设备操作。系统能够实时监测环境参数和用户状态,自动调节温度、照明等设备,提升家居舒适度。该架构可扩展为多模态感知与强化学习相结合的智能系统,为智慧家居发展提供技术基础。

一键难忘的博客 1122

Java GoF 23种设计模式-创建型模式-工厂方法模式(Factory Method Pattern)

文章目录一、模式定义二、模式动机三、模式结构四、代码实现五、缺点 一、模式定义 工厂方法模式(Factory Method Pattern)又称为工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,它属于创建型模式。 在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。 工厂方法模式

WU4566285的博客 432

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

工厂方法模式GoF23种设计模式之创建型模式之工厂方法模式

在写这篇文章之前,xxx已经写过了几篇关于改工厂方法模式主题的文章,想要了解的朋友可以去翻一下之前的文章     一、概述         定义一个用于创立对象的接口,让子类去决定实例化哪个类。工厂方法将一个类的实例化延迟至其子类。     二、适用性     1.当一个类不知道它所必须创立的对象的类的时候。     2.当一个类希望由其子类来指定它所创立的对象的时候。     3.当...

weixin_34219944的博客 90

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

【设计模式】创建型模式/结构型模式/行为型模式概述

一、设计模式的分类 根据其目的(模式是用来做什么的)可分为创建型 (Creational),结构型(Structural)和行为型 (Behavioral)三种: • 创建型模式主要用于创建对象。 • 结构型模式主要用于处理类或对象的组合。 • 行为型模式主要用于描述对类或对象怎样交互和怎样分配职责。 根据范围,即模式主要是用于处理类之间关系还是处理对象之间的关系,可分为类模式和...

LittleWheat的博客 7756

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

GoF设计模式概括

GoF23种模式一览范围\目的创建型模式结构型模式行为型模式类模式 工厂方法模式 (类)适配器模式 解释器模式 模板方法模式对象模式 抽象工厂模式 建造者模式 原型模式 单例模式 (对象)适配器模式 桥接模式 组合模式 装饰模式  外观模式  享元模式 代理模式 职责链模式 命令模式 迭代器模式 中介者模式 备忘录模式 观察者模式 状态模式  策略模式 访问者模式简要说明:创建型模式Creatio...

BeatificCat 973

GoF之工厂模式(简单工厂模式)

● 第一种:简单工厂模式(Simple Factory):不属于23种设计模式之一。简单工厂模式又叫做:静态 工厂方法模式。● 工厂模式是解决对象创建问题的,所以工厂模式属于创建型设计模式。● 不过除了GoF23种设计模式之外,还有其它的设计模式,比如:JavaEE的设计模式(DAO模式、MVC模式等)。● 第三种:抽象工厂模式(Abstract Factory):是23种设计模式之一。● 第二种:工厂方法模式(Factory Method):是23种设计模式之一。○ 创建型(5个):解决对象创建问题。

m0_64803878的博客 128

设计模式(二)创建型:工厂方法模式详解

工厂方法模式(Factory Method Pattern)是 GoF 23 种设计模式中的经典创建型模式,其核心价值在于将对象的创建过程延迟到子类,从而实现创建逻辑与使用逻辑的解耦。

谦与谦寻的神隐 967

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

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

ruanrunxue的博客 1617

Java常用的设计模式理解和实现

单例模式 【设计模式】单例模式的代码实现 模板方法模式 简单工厂模式 抽象工厂模式 策略模式 装饰器模式 责任链模式

Zouch 223

设计模式概念与分类

定义:软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。代表了代码的最佳实践,被有经验的开发人员所使用设计模式是很多被重复使用并知晓的,主要是对代码和经验的总结使用设计模式是为了重用代码,让代码更容易被他人理解,保证代码的可靠性。

babstyt的博客 936

GoF 的 23 种设计模式的分类和功能

1.GoF的23种设计模式的分类 设计模式有两种分类方法,即根据模式的目的来分和根据模式的作用的范围来分 1. 根据目的来分 根据模式是用来完成什么工作来划分,这种方式可分为创建型模式、结构型模式和行为型模式3 种 创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式 结构型模式:用于...

世俗的博客 219

Java设计模式之创建型设计模式

什么是设计模式 设计模式(Design Pattern)是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、可读性、稳健性以及安全性的解决方案。 1995 年,GoF(Gang of Four,四人组/四人帮)合作出版了《设计模式:可复用面向对象软件的基础》一书,共收录了 23 种设计模式,从此树立了软件设计模式领域的里程碑,人称...

hwx865的专栏 324

23 种设计模式的分类和功能

设计模式有两种分类方法,即根据模式的目的来分和根据模式的作用的范围来分。 1. 根据目的来分 根据模式是用来完成什么工作来划分,这种方式可分为创建型模式、结构型模式和行为型模式3 种。 创建型模式:用于描述“怎样创建对象”,它的主要特点是“将对象的创建与使用分离”。GoF 中提供了单例、原型、工厂方法、抽象工厂、建造者等 5 种创建型模式。 结构型模式:用于描述如何将类或对象按某种布...

weixin_30301183的博客 70
上一篇: 供应链管理柔性系统和单据定制引擎
下一篇: GoF23种设计模式之创建型模式之原型模式
innovation
博客等级 码龄14年 251粉丝 136原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值