详解工厂模式与抽象工厂模式有什么区别?【图解+代码】

server/2024/9/24 2:21:41/

目录

工厂模式工厂模式>抽象工厂模式是什么?

两种设计模式的流程:

1、工厂模式

2、工厂模式>抽象工厂模式

两种模式的对比

共同点:

不同点:

总结


工厂模式工厂模式>抽象工厂模式是什么?

我已经具体的写了这两种模式及代码示例,可以点开去了解一下这两种设计模式是什么样子的:

工厂模式:                设计模式 之 —— 工厂模式-CSDN博客

工厂模式>抽象工厂模式:        设计模式 之 —— 工厂模式>抽象工厂模式-CSDN博客

这篇博客用来对上面两篇博客做一下比较,没看过的可以去学习一下,里边含具体代码,及实现结果。

两种设计模式的流程:

1、工厂模式

2、工厂模式>抽象工厂模式

两种模式的对比

共同点:

1、两种模式都通过封装对象的创建过程,将客户端代码与具体的实现类分离。

2、都使用工厂方法来创建对象,而不是直接使用new关键字。(将对象的创建过程封装起来)

3、都遵循"开闭原则",增加新的产品时,两种模式均可以在不修改客户端代码的情况下,通过增加新的产品类来扩展系统。

4、都遵循"单一职责原则",即工厂类负责对象的创建,客户端负责对象的使用。

不同点:

1、工厂模式是创建单一的产品对象,即一个工厂负责创建一类产品。
工厂模式>抽象工厂模式是创建产品族,即一个工厂负责创建一系列相关的产品对象。

2、工厂模式更加灵活,可以很容易地增加新的产品类型,但不能轻易地切换产品族。
工厂模式>抽象工厂模式可以很容易地切换不同的产品族,但不能轻易地增加新的产品类型(因为这需要修改抽象工厂接口。)

3、工厂模式的客户端代码依赖于具体的工厂实现类。
工厂模式>抽象工厂模式的客户端代码依赖于抽象工厂接口,而不依赖于具体的工厂实现类。

4、工厂模式通常只有一个抽象工厂接口和多个具体工厂实现类。
工厂模式>抽象工厂模式通常有一个抽象工厂接口,以及多个具体工厂实现类,每个实现类创建一个产品族。

总结

当你需要创建一个对象,但不关心它的具体类型时,可以使用工厂模式。如果需要产品切换族,适合使用工厂模式>抽象工厂模式

工厂模式适用于创建单一产品的场景,而工厂模式>抽象工厂模式适用于创建产品族的场景。

java代码链接

工厂模式:                设计模式 之 —— 工厂模式-CSDN博客

工厂模式>抽象工厂模式:        设计模式 之 —— 工厂模式>抽象工厂模式-CSDN博客


http://www.ppmy.cn/server/95627.html

相关文章

卡码网--数组篇(移除元素)

系列文章目录 文章目录 系列文章目录前言27. 移除元素总结 前言 代码随想录:详情链接 27. 移除元素 力扣27 https://leetcode.cn/problems/remove-element/description/ Step1: 读题: 原地移除所有数值等于 val 的元素,并返回移除后数组的新长度。不要使用额外的…

AWD神器—watchbird后台rce挖掘

简介 在传统的AWD攻防中,Waf扮演着重要的角色,Watchbird作为一款专门为AWD而生的PHP防火墙,具有部署简单,功能强大等特点,一出世便受到了广大CTFer的喜爱,目前在GitHub上已有600多star。本篇则详细介绍如果…

OD C卷 - 小华地图寻宝

小华地图寻宝&#xff08;200&#xff09; m x n的矩阵中&#xff0c;横纵坐标范围【0&#xff0c;n-1】【0&#xff0c;m-1】横纵坐标数位之和<k的方格中存在1g黄金&#xff0c;如&#xff08;21,13&#xff09;坐标中2113 < 10&#xff1b;从&#xff08;0,0&#xff…

今天的一件小事,亲身感受:付费是提高效率的重要途径

今天需要修改一个单页网站源码&#xff0c;有一个小问题困住我3个小时了。 毕竟我也不是专业的&#xff0c;没有系统学习过这些&#xff0c;搜答案都不知道怎么搜哈哈 吃过午饭&#xff0c;想着不能这么耗下去了&#xff0c;于是及时去了某宝&#xff0c;找到一个修改代码的 …

网络编程-

1-什么是网络编程 网络编程是指通过计算机网络实现程序之间的数据交换和通信的技术和方法。它涉及到如何在网络上传输数据、建立连接、处理请求和响应等内容。在软件开发中&#xff0c;网络编程通常用于开发客户端和服务器之间的交互&#xff0c;使得不同计算机之间可以进行数…

代码随想录算法训练营第二天 | 209. 长度最小的子数组、59. 螺旋矩阵 II

目录 209. 长度最小的子数组1、题目描述2、思路3、code4、复杂度分析 LC59 螺旋矩阵 II1、题目描述2、思路3、code4、复杂度分析 209. 长度最小的子数组 题目链接&#xff1a;209 1、题目描述 给定一个含有 n 个正整数的数组和一个正整数 target 。找出该数组中满足其总和大于…

mongodb 备份还原

### 加入 MongoDB 官方 repositoryecho [mongodb-org-4.4] nameMongoDB Repository baseurlhttps://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.4/x86_64/ gpgcheck1 enabled1 gpgkeyhttps://www.mongodb.org/static/pgp/server-4.4.asc| tee /etc/yum.repos.d/mo…

文件包含漏洞Tomato靶机渗透_详解

一、导入靶机 将下载好的靶机拖入到VMware中&#xff0c;填写靶机机名称(随便起一个)和路径 虚拟机设置里修改网络状态为NAT模式 二、信息收集 1、主机发现 用御剑扫描工具扫描虚拟机的NAT网段&#xff0c;发现靶机的IP是192.168.204.141 2、端口扫描 用御剑端口扫描扫描全…