对简单工厂模式、工厂方法模式、抽象工厂模式的简单理解

embedded/2024/9/24 13:19:12/

简单工厂模式

三部分组成

  • 抽象类
  • 一些抽象类的具体实现类
  • 工厂类

把创建对象的任务交给一个工厂类来实现,对业务进行封装。
优点:实现了任务分离,客户端不用关心业务的具体实现,交由工厂来“生产”。
缺点:违背开闭原则,拓展时要修改工厂类

工厂方法模式

四部分组成:

  • 抽象类
  • 一些抽象类的具体实现类
  • 抽象工厂类
  • 抽象工厂类的实现类

工厂方法模式简单工厂模式的基础上对工厂进行进一步抽象,定义一个统一的抽象工厂,再设置具体类对应的具体抽象工厂。

优点:新增产品的时候不会修改抽象工厂类,只需要添加一个具体实现类和抽象工厂实现类即可。
缺点:每添加一个产品需要实现2个类,增加了系统复杂度

抽象工厂模式

四个部分组成:

  • 抽象类
  • 一些抽象类的具体实现类
  • 抽象工厂类
  • 抽象工厂类的实现类

抽象工厂模式相比与工厂方法模式,它的每一个抽象类可以生产多种产品的组合,而不是只能生产出一种产品。


http://www.ppmy.cn/embedded/44444.html

相关文章

TypeScript 学习笔记(十一):TypeScript 与微服务架构的结合应用

TypeScript 学习笔记(十一):TypeScript 与微服务架构的结合应用 1. 引言 在前几篇学习笔记中,我们探讨了 TypeScript 的基础知识、前后端框架的结合应用、测试与调试技巧、数据库以及 GraphQL 的结合应用。本篇将重点介绍 TypeScript 与微服务架构的结合应用,包括如何使…

521源码-免费手游下载-【烽火中原H5】深度体验:横版网页国战手游及WIN学习手工端

【烽火中原H5】深度体验:横版网页国战手游及WIN学习手工端全面解析,烽火中原H5】横板网页国战手游WIN学习手工端语音视频教程营运后台CDK授权后台, 喜欢国战手游的玩家们,你们期待已久的【烽火中原H5】现已上线!这款游戏以横版网页的形式呈现…

基于springboot+vue的社区医院管理服务系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

Flutter 中的 NestedScrollViewViewport 小部件:全面指南

Flutter 中的 NestedScrollViewViewport 小部件:全面指南 Flutter 是一个功能丰富的 UI 工具集,它提供了多种布局和控件来帮助开发者构建美观且功能强大的应用。在 Flutter 的滚动控件中,NestedScrollView 是一个特别的存在,它允…

千亿级开源大模型Qwen110B部署实测

近日,通义千问团队震撼开源 Qwen1.5 系列首个千亿参数模型 Qwen1.5-110B-Chat。 千亿级大模型普通显卡是跑不了推理的,普通人一般也没办法本地运行千亿级大模型。 为了探索千亿级大模型到底需要计算资源,我用云计算资源部署了Qwen1.5-110B-…

raid 磁盘阵列

raid 磁盘阵列: **条带化存储:**数据分散在多个物理磁盘上的存储方式。利用多个磁盘并行读取和写入。 条带化的存储性能和读写性能是最好的。 磁盘的组成方式不同,也就是不同的raid级别: **raid 0(条带化存储&#x…

618手把手教你捡漏服务器

618最全捡漏攻略 捡漏规则1、新人优惠⭐⭐⭐2、教育优惠⭐⭐3、回馈活动⭐️ ECS价格对比新人优惠💝京东云 50/年百度云 60.69/年阿里云 82/年腾讯云 99/年 回馈活动🎁阿里云 教育优惠🏫阿里云腾讯云 hi,好久不见各位,…

数据库到服务器提权

数据库提权流程: 1、先获取到数据库用户密码 -网站存在SQL注入漏洞 -数据库的存储文件或备份文件 -网站应用源码中的数据库配置文件 -采用工具或脚本爆破(需解决外联问题) 2、利用数据库提权项目进行连接 MDUT //jkd1.8 启动 Databasetools …