设计模式:简单工厂、工厂方法、抽象工厂

news2025/2/27 7:18:11
参考
Java设计模式之创建型:工厂模式详解(简单工厂+工厂方法+抽象工厂) - 知乎

工厂方法

以生产手机为例,具体的UML图如下:
这种方法的优点是对于用户来说,不再需要面对具体的生产逻辑,只需要将生产的安排工作和细节都交给工厂类去做。缺点是在这种情况下,如果想要增加一种商品,比如华为手机,不仅需要新增一个实现抽象产品的接口,还需要修改具体工厂中的代码逻辑。

简单工厂

不仅对产品进行抽象,也对工厂进行抽象,这样想新增一个产品的话,不需要对现有代码进行修改,遵循了开闭原则,即对扩展开放,对修改封闭。

同样以手机为例:

抽象工厂方法

简单工厂只能针对单一的产品类型,如果场景变成了产品族,即苹果旗下不仅有手机,也有手环,小米旗下有手机,也有手环,如果客户想要一次性生产小米手机、小米手环,并一次性生产苹果手机、苹果手环,那么就需要自己再进行复杂的处理。

以手机、手环为例子的具体UML图:

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

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

相关文章

k8s的安装

我这里使用vmware创建了三台虚拟机,k8s的虚拟机建议最少2核、4G内存,我的电脑配置不高采用的2核、3G的配置; 安装k8s之前需要先安装docker,docker的安装参考:docker的安装及使用_docker的安装和使用_骑士999111的博客-…

光伏电池建模及温度光照的影响曲线MATLAB仿真

微❤关注“电气仔推送”获得资料 模型介绍: 需要MATLAB2018B及以上的版本!! 首先根据根据环境修正公式搭建光伏电池仿真模型: 温度变化下的IU、PU仿真及曲线: 光照变化下的IU、PU仿真及曲线: 文件说明&a…

SSD上 NVIDIA Jetson Orin NANO系統如何刷

对于AI计算性能高达40TOPS的Jetson Orin Nano开发套件来说,如果缺少性能够好的存储相匹配,会让总体执行效益大打折扣。为此,NVIDIA在Jetson Orin Nano开发套件上配置2个M.2接口(如下图),最高能安装2片高速P…

Spring Boot启动源码分析

一,前言 版本:spring-boot-starter-parent版本为2.3.0 Spring Boot项目的启动入口是一个main方法,因此我们从该方法入手即可 二,源码分析 跟踪run方法 /*** SpringApplication的方法* param primarySource 启动类的class* p…

静态顺序表及基本操作具体实现

静态顺序表及几个基本操作 🎑定义一个顺序表🎑 初始化——置空顺序表🎑创建一个顺序表🎑打印顺序表各结点的值🎊🎊 顺序表基本操作🎃头插🎃尾插🎃头删🎃尾删 …

mysql报错:mysql8插入sql关键字“rank”问题

标题 一、背景二、报错展示三、排查四、结论 一、背景 在设计表的需要定义一个排名的字段,于是定义了“rank”字段,使用mybatisplus进行插入的时候,项目报错。 二、报错展示 1、项目插入报错 2、mysql中直接insert报错 三、排查 通过ins…

SpringCloud Gateway--网关服务基本介绍和基本原理

😀前言 本篇博文是关于SpringCloud Gateway的基本介绍,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力…

快速解决AndroidStudio代码提示失效问题

在编写代码时,代码不自动提示,发现代码自动提示设置正常,所以查询到问题原因在于节能模式的开启,具体解决方式如下: 关闭节能模式 如上图所示,将Power Save Mode前面的对勾去掉,则完成节能模式…

系统检测到您的账户不符合国家相关法律法规或《支付宝用户服务协议》约定,暂时无法签约当前产品

最新一直在开发支付宝小程序,遇到的各种问题颇多,技术上的问题都好解决,开发平台上的问题,真的是让我心力交瘁,自己分析不出原因,打支付宝客服电话永远得不到解答。 现在把自己有一些收获的问题&#xff0…

rk3568环境配置和推理报错: RKNN_ERR_MALLOC_FAIL

前言 最近在部署算法在板子侧遇到的一些问题汇总一下: 一、版本问题 经过测试现在将自己环境配置如下: 本地linux安装rknn-toolkit2-1.5.0 本地Linux使用的miniconda新建的一个python虚拟环境(自行网上查找相关方法) 安装好自…

Docker Desktop 界面功能介绍,添加国内镜像源

目录 镜像源修改设置 其他偏好设置 镜像源修改设置 默认情况下,Docker Desktop会从Docker Hub下载镜像,但在国内由于网络的原因,下载速度可能较慢,配置国内镜像源可以提速镜像下载。在Docker Desktop中配置镜像源非常简单&…

javaee之黑马乐优商城5

分析一下spu与sku的数据结构 再来说一下什么是spu standard product unit 标准产品单元 :SPU级别的规格参数通常是与整个产品类型或产品系列相关的通用参数。比如华为手机下面的p系列、荣耀系列,都可以标识为spu级别规格参数 sku stock keeping unit 库存保管单位…

flarum 论坛 User Statistics插件修改

此插件在中国使用日期不是很理想,于是决定修改代码 下面是插件信息: User Statistics A Flarum extension. Add some user statistics in flarum posts, this extension require clarkwinkelmann/flarum-ext-likes-received and will be installed au…

.动态内存经典题分析(1)

题目: 请问运⾏Test 函数会有什么样的结果? void GetMemory(char *p) {p (char *)malloc(100); }void Test(void) {char *str NULL;GetMemory(str);strcpy(str, "hello world");printf(str); }int main() {Test();return 0; } 代码分析&a…

面试问题之如何解释微服务

这次的面试还是感觉非常愉快,没有那么憋屈,问的问题也非常有意思。 问题 假设现在有一个人完全不懂微服务,你能和对方解释下什么是微服务吗? 面试回答 这个问题如果要完全回答好,感觉不是那么容易。 什么是微服务 …

云原生Kubernetes:K8S存储卷

目录 一、理论 1.存储卷 2.emptyDir 存储卷 3.hostPath卷 4.NFS共享存储 二、实验 1.emptyDir 存储卷 2.hostPath卷 3.NFS共享存储 三、问题 1.生成pod一直pending 四、总结 一、理论 1.存储卷 (1)概念 容器磁盘上的文件的生命周期是短暂的…

ORM框架的发展历史

文章目录 JDBCJDBC操作的特点JDBC优化1.0JDBC优化2.0JDBC优化3.0 Apache DBUtils初始配置基本操作 SpringJDBC初始配置CRUD操作 HibernateORM介绍Hibernate的使用创建项目配置文件CRUD 操作其他方式 Hibernate总结 MyBatis JDBC JDBC操作的特点 最初的时候是直接通过jdbc来直…

Unity中Shader实现模板测试Stencil

文章目录 前言一、UI中的遮罩1、Mask ——> 模板测试2、RectMask2D ——> UNITY_UI_CLIP_RECT 二、模板缓冲区Stencil一般是和Pass平行的部分,Pass部分写的是颜色缓冲区Stencil:Comp(比较操作)Pass(模版缓冲区的更新) 三、实际使用1、在…

计算物理专题----蒙特卡洛积分实战

Part one 蒙特卡洛积分计算案例 import numpy as np import matplotlib.pyplot as plt import pandas as pd from scipy.stats import norm, kstestnp.random.seed(0) def integrate(a,b,n100):x np.random.uniform(a,b,n)total sum(np.exp(x))return (b - a) * total / nNu…

XUI - 一个简洁而优雅的Android原生UI框架

官网 GitHub - xuexiangjys/XUI: 💍A simple and elegant Android native UI framework, free your hands! (一个简洁而优雅的Android原生UI框架,解放你的双手!) XUI | 💍A simple and elegant Android native UI framework, fre…