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

2023-09-20 21:34:23
参考

工厂方法

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

简单工厂

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

同样以手机为例:

抽象工厂方法

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

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

更多推荐

Qt浏览器模块的几点说明

Qt5.6以前用的是webkit,Qt5.6版本以后分两种情况,一种是mingw编译器(windows系统)对应的Qt库不再提供浏览器模块。Qt5.6以后的版本在linux系统和mac等系统,都不存在没有浏览器控件的情况,都使用的是webengine。仅仅是windows上的mingw编译器的Qt版本没有,其他系统其实

【线性回归、岭回归、Lasso回归分别预测患者糖尿病病情】数据挖掘实验一

Ⅰ、项目任务要求任务描述:将“diabetes”糖尿病患者数据集划分为训练集和测试集,利用训练集分别结合线性回归、岭回归、Lasso回归建立预测模型,再利用测试集来预测糖尿病患者病情并验证预测模型的拟合能力。具体任务要求如下:搜集并加载“diabetes”患者糖尿病指数数据集。定义训练集和测试集(训练集和测试集比例分别

并发编程系列-AQS

AbstractQueuedSynchronizer(AQS)是一个抽象队列同步器,它用于构建依赖于先进先出(FIFO)等待队列的阻塞锁和相关同步器的框架。该类的目的在于提供基本功能的封装,适用于大多数需要使用单个原子int值表示同步状态的同步器。举例来说,ReentrantLock、Semaphore以及Future

《计算机视觉中的多视图几何》笔记(3)

3ProjectiveGeometryandTransformationsof3D这章主要讲的是3D的射影几何,与2D的射影几何差不多。主要区别是:3D射影几何对偶的是点和平面,直线是自对偶的。3D空间中直线有4个自由度,这一现象并不是那么容易直接得出。一种方法是把直线用正交平面两个交点表示。文章目录3Projecti

【Rust 基础篇】Rust 父trait:扩展和组织trait的继承体系

导言Rust是一种以安全性和高效性著称的系统级编程语言,其设计哲学是在不损失性能的前提下,保障代码的内存安全和线程安全。在Rust中,trait是一种用于抽象类型行为的机制。有时候,我们需要在一个trait的基础上扩展更多的行为,或者将多个trait组合起来形成一个更大的trait继承体系。这时,Rust的父trait

vue3 - 前端 Vue 项目提交GitHub 使用Actions自动化部署

GitHubDemo地址在线预览参考文章使用GithubActions发布Vue网站到GithubPage使用GithubActions将Vue项目部署到GithubPages前端使用githubpages部署自己的网站GitHubActions自动化部署前端项目指南前言vue前端项目写好之后,想部署到线上通过在线地址

助力经销商打赢旺季攻坚战,全兴在全国范围内拉开“兴风暴”

执笔|姜姜编辑|萧萧中秋、国庆历来是白酒消费的旺季,也是完成当年任务的关键期,尤其今年“双节”合一,各大食品饮料企业都憋足了劲,白酒促销大戏也轮番上演。作为中国“老八大名酒”之一的全兴酒业谋定而动,以积极奔跑的姿态,不断精耕重点区域地级市场,紧抓双节动销,助力渠道伙伴在白酒旺销季打一场大胜仗。对话金牌酒商,老名酒筑牢大

终于还是熬不住了,转行了,分享一波刚学到的知识吧,字符串的自带函数.py

网传IT行业很难,没错我是真真正正的体验到了(😭)大家好,我原来是在大学自学了java的大部分技术,基本上可以达到企业级开发了,大三一结束我就在浙江杭州开始找工作,找了两个月,中间一共找到过三个关于后端开发的工作,加在一起工作了半个月左右,种种原因都没有继续工作。后来面试了一个Python爬虫做rpa自动化的实习生,

华为云CodeArts Check代码检查服务用户声音反馈集锦(6)

CodeArtsCheck(原CodeCheck),是自主研发的代码检查服务。建立在华为30年自动化源代码静态检查技术积累与企业级应用经验的沉淀之上,为用户提供代码风格、通用质量与网络安全风险等丰富的检查能力,提供全面质量报告、便捷的问题闭环处理帮助企业有效管控代码质量,助力企业成功:感兴趣的小伙伴可以点此>>体验下服

马斯洛需求层次模型分析之云安全浅谈

基于马斯洛需求层次模型,我们可以将互联网云安全建设和运营分析分为五个阶段,每个阶段对应一些关键的安全关键词,以下内容是对这些阶段的浅显分析:第一阶段:基础设施安全(生理需求)在初始阶段,云服务提供商需要确保基础设施的安全性,包括数据中心、网络、系统等方面。这涉及到的关键词有:数据中心安全:确保数据中心物理设施的安全,如

kubernetes(k8s)PVC

概念PVC的全称是:PersistentVolumeClaim(持久化卷声明),PVC是用户存储的一种声明,PVC和Pod比较类似,Pod消耗的是节点,PVC消耗的是PV资源,Pod可以请求CPU和内存,而PVC可以请求特定的存储空间和访问模式。对于真正使用存储的用户不需要关心底层的存储实现细节,只需要直接使用PVC即

热文推荐