【设计模式】四、工厂模式

news2024/11/25 4:35:08

文章目录

    • 概述工厂模式
    • 简单工厂模式:
    • 工厂方法模式
    • 抽象工厂模式
    • 小结

概述工厂模式

传统方式:
在这里插入图片描述

简单工厂模式:

在这里插入图片描述

简单工厂模式的设计方案: 定义一个可以实例化 Pizaa 对象的类,封装创建对象的代码。

存在的问题:
简单工厂模式,创建不同的简单工厂类,比如 BJPizzaSimpleFactory、LDPizzaSimpleFactory 等等.从当前
这个案例来说,也是可以的,但是考虑到项目的规模,以及软件的可维护性、可扩展性并不是特别好

工厂方法模式

定义了一个创建对象的抽象方法,由子类决定要实例化的类。工厂方法模式将对象的实例化推迟到子类。
在这里插入图片描述

抽象工厂模式

就是把工厂方法模式中各个工厂抽出抽象类实现
在这里插入图片描述

public interface AbsFactory {
	//让下面的工厂子类来 具体实现
	public Pizza createPizza(String orderType);
}
public class PizzaStore {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		//new OrderPizza(new BJFactory());
		new OrderPizza(new LDFactory());
	}

}
//接收使用抽象工厂
public class OrderPizza {

	AbsFactory factory;

	// 构造器
	public OrderPizza(AbsFactory factory) {
		setFactory(factory);
	}
}

小结

  1. 工厂模式的意义
    将实例化对象的代码提取出来,放到一个类中统一管理和维护,达到和主项目的依赖关系的解耦。从而提高项目的扩展和维护性。
  2. 三种工厂模式 (简单工厂模式、工厂方法模式、抽象工厂模式)
  3. 设计模式的依赖抽象原则
  • 创建对象实例时,不要直接 new 类, 而是把这个 new 类的动作放在一个工厂的方法中,并返回。有的书上说,变量不要直接持有具体类的引用。
  • 不要让类继承具体类,而是继承抽象类或者是实现 interface(接口)
  • 不要覆盖基类中已经实现的方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1043934.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

微信小程序 语法学习

1. 注册小程序账号 https://mp.weixin.qq.com/cgi-bin/wx 2. 获取appId 开发管理 -> 开发设置 3. 下载开发工具 https://developers.weixin.qq.com/miniprogram/dev/devtools/devtools.html 4. 登录开发工具 不推荐游客模式,使用微信扫描 工具内置了很多模…

25835-2010 缆索用环氧涂层钢丝 阅读笔记

声明 本文是学习GB-T 25835-2010 缆索用环氧涂层钢丝. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了缆索用环氧涂层钢丝的术语和定义、产品标记、订货内容、材料、涂覆、技术要求、涂层 的修补、试验方法、检验规则、包装、标…

转载-C#学习笔记-基本概念(CLR、CTS、CLS...)

1. CLR(Common Language Runtime,公共语言运行时(库)) 可由多种.NET语言使用的运行时环境,其主要作用是定位、加载和管理.NET类型、内存管理、安全检查、线程管理等。.NET运行库提供了一个定义明确的运行库层,可以被支持.NET的所有语言和平台…

【萌新的RiscV学习之流水线结构的概述-7】

萌新的RiscV学习之流水线结构的概述-7 之前写完了单周期的指令 目前朝着流水线迈进 由于涉及学业机密 就不展示代码了 主要展示学习过程和一些想法 由于时钟周期必须满足所有指令中最坏的情况,所以不能使用那些缩短常用指令执行时间而不改变最坏情况的实现技术。因…

一键导入照片就能转成电子相册?

每次旅行、每个瞬间,都值得被珍藏。无论是生日、聚会还是旅行,这款神器都能帮你记录下美好瞬间。你只需要上传照片,选择几个模板,就能在几分钟内拥有一本精美的电子相册! 首先这个神器叫做FLBOOK制作3D仿真翻页电子杂志…

VMware CentOS7 忘记root密码如何更改

VMware CentOS7 忘记root密码如何更改 1、进来的页面马上点上下键停止自动进入 (Immediately click the up and down buttons on the incoming page to stop automatic entry) 2、点键盘e键进入编辑页面e (Click the keyboard e key to en…

基于51单片机气体检测报警系统-proteus仿真-源程序

一、系统方案 1、本设计采用51单片机作为主控器。 2、MQ5采集气体值送到液晶1602显示。 3、按键设置报警阀值,声光报警。 二、硬件设计 原理图如下: 三、单片机软件设计 1、首先是系统初始化 void init_1602() //初始化 { lcdwc(0x01); lcdwc(0x38)…

ArcGIS实战教程

ArcGIS实践教程(1)通过ArcMap把mxd格式转换为dwg格式 ArcGIS实践教程(2)ArcMap将excel数据转换为shp ArcGIS实践教程(3)ArcMap导入Excel属性数据 ArcGIS实践教程(4)利用ArcGIS进行…

NPDP证书,为什么这么多人考?

NPDP证书至2016年引进国内,考试人数就持续增长,不仅是新产品开发唯一 的职业证书,在产品管理这一领域的知名度也在前列,那么这个证书的作用在哪里呢? 想考npdp证书,npdp干货可下载: 1、就业范围…

YOLOV1论文精度

YOLOV1:You only look once 1.介绍 1.1 简介: 传统的目标检测算法如R-CNN都是先生成候选框,然后在分类器上进行分类,由于每个部分都是分开训练,所以很难去优化而且速度比较慢。而yolov1把目标检测当成一个回归问题&…

2023年融资融券费率最低的证券公司,佣金万一,融资利率5%永久

2023年信用账户新开户,融资利率最低5%,专项融券2.99%起! 了解融资利息之前先看看融资融券业务开通要求: ①在任意券商交易时间满半年。 ②在开户券商连续20个交易日日均资产超过50W。如:账户保持100w,只需要10个交易日…

消息中间件(二)——kafka

文章目录 Apache Kafka综述什么是消息系统?点对点消息类型发布-订阅消息类型 什么是Kafka?优点关键术语Kafka基本原理用例 Apache Kafka综述 在大数据中,会使用到大量的数据。面对这些海量的数据,我们一是需要做到能够收集这些数据&#xf…

【HCIE】10.EVPN

VPLS技术,公共网络中的一个L2VPN VPN一共有8种类,三大属性是:MPLS(IP),L2(L3),P2P(P2MP) MPLS VPN的属性是:MPLS,L3,P2MP VPLS和EVPN的属性是:MPLS L2 P2MP L3vpn是两个不在同一网段的网络互通 L2vpn是…

【必看】自动化测试:selenium(环境部署和元素定位)

一、什么是selenium? > 一个web自动化测试工具; 二、主流的自动化工具: > QTP:收费 支持(支持web、桌面软件自动化) > selenium:免费,开源 只支持web项目 > Robot frameword: 基于Python扩…

VM装Windows虚拟机扩容

1.进入服务器CMD模式,输入diskpart,回车 2.查看卷 list volume 3.指定扩容的磁盘 select volume 1 4.查看磁盘 list disk 5.查看逻辑分区 list parttition 6.选择需要扩展的逻辑分区 select partition 1 7.扩展 extend 8.退出并查看磁盘大小

Linux系统离线安装Python

目录 一、简介 二、前提准备 三、下载Python源码 四、将离线python包传输到Linux主机 五、编译以及创建软链接 一、简介 由于工作原因,我们经常会在内网环境下使用Linux,不过这样会让我们安装一些软件变得困难,例如需要安装Python。虽然…

工业静电控制ESD防静电手环监控看板的优势

在现代工业生产中,静电问题一直是令人头痛的难题。静电不仅会对产品质量造成严重影响,还可能导致设备故障和生产线停工。为了解决这一问题,一种新型的防静电监测系统应运而生——ESD防静电手环监控看板。该系统采用全自动智能测量、预警和提示…

2023《生信知识库》订阅

写在前面 自2021年11月末,我们开始通过《小杜的生信笔记》分享自己的学习笔记。我们的教程也受到很多同学的关注。我们的分享主要基于小杜自己的学习笔记,如画图,分析等。在知乎中,我们推出一期R语言绘图总汇https://zhuanlan.zhi…

【工具使用】Audition软件导入.sesx文件报错问题

一,简介 本文主要介绍了在使用Audition导入新的wav文件后,保存,然后再打开.sesx文件时报错:“ 错误: 文件已损坏或使用了不受支持的格式 XML FATAL ERROR: (line: 2835, col: 69) [ D:\Project\AE_Y2311\16channel_test\16_chann…

2023-9-26 JZ22 链表中倒数最后k个结点

题目链接:链表中倒数最后k个结点 import java.util.*;/** public class ListNode {* int val;* ListNode next null;* public ListNode(int val) {* this.val val;* }* }*/public class Solution {/*** 代码中的类名、方法名、参数名已经指定&#xf…