当前位置: 首页 > news >正文

【个人笔记】一个例子理解工厂模式

工厂模式优点:创建时类名过长或者参数过多或者创建很麻烦等情况时用,可以减少重复代码,简化对象的创建过程,避免暴露创建逻辑,也适用于需要统一管理所有创建对象的情况,比如线程池的工厂类Executors

简单工厂:用一个工厂类封装对象的创建过程,要获取对象直接从工厂类获取
(专卖比亚迪秦的生产工厂,只卖秦)
优点:就是一开始说的那些
缺点:不符合开闭原则(对扩展是开放的,对修改是关闭的),要换产品就得改工厂类的代码
(如果秦不好卖,客户(要使用对象的方法)让你改卖宋,你就得把生产线(源码)换成宋的生产线,很麻烦)

工厂方法:定义一个工厂接口,具体要生产啥对象由实现类决定。(专卖比亚迪的工厂,目前只生产秦,你要宋我就再开一个专卖宋的厂)
优点:不需要对原工厂进行修改
(不用换秦的生产线,直接开一家新工厂生产宋)
缺点:一个工厂对应一个产品,每增加一个产品就要新增一个具体的工厂类,增加系统复杂度
(那我多一个子品牌就得多开一家工厂,那多麻烦)

抽象工厂:定义一个工厂接口,把类似的对象归纳到同一个工厂实现类(比亚迪工厂)中,一个实现类可以有多个生产不同对象(秦、宋、汉)的方法。
(啥车都卖,目前只卖比亚迪(实现类),厂里还能生产秦、宋、汉(类里的方法),你要问界M7我就再开一个问界的厂(实现类),先卖M7(类里的方法),有人要M5的话也可以产)
优点:不同工厂之间有比较多相同点时可以使用抽象工厂模式,可以提高组件的复用性;解决跨平台带来的兼容问题
缺点:增加新的产品等级结构麻烦,需要对原有结构进行较大的修改,甚至需要修改抽象层代码

例子总结:
简单工厂:比亚迪的秦
工厂方法:比亚迪的秦、比亚迪的宋、比亚迪的汉
抽象工厂:比亚迪(秦、宋、汉)

http://www.lryc.cn/news/408867.html

相关文章:

  • 【C语言】数组栈的实现
  • kafka 各种选举过程
  • 树与二叉树【数据结构】
  • 简单几步,把浏览器书签转换成导航网页
  • Mac安装Hoomebrew与升级Python版本
  • 代码审计:Bluecms v1.6
  • 谷粒商城实战笔记-59-商品服务-API-品牌管理-使用逆向工程的前后端代码
  • 如何利用Jenkins自动化管理、部署数百个应用
  • Java之归并排序
  • 了解ChatGPT API
  • EasyAnimate - 阿里开源视频生成项目,国产版Sora,高质量长视频生成 本地一键整合包下载
  • 7月23日JavaSE学习笔记
  • Linux——DNS服务搭建
  • C#中的wpf基础
  • 基于微信小程序+SpringBoot+Vue的刷题系统(带1w+文档)
  • SSH -i的用法
  • 小白学习webgis的详细路线
  • 使用ChatGPT来撰写和润色学术论文的教程(含最新升级开通ChatGpt4教程)​​
  • 常见的 HTTP 状态码分类及说明
  • Leetcode700.二叉搜索树中搜索具体值
  • 自动导入unplugin-auto-import+unplugin-vue-components
  • Conda修改包/虚拟环境储存目录
  • Live555源码阅读笔记:哈希表的实现(C++)
  • 警务平台app
  • Java代理模式详解
  • docker centos镜像 npm安装包时报错“npm ERR! code ECONNRESET”
  • Angular中component和directive的区别?
  • Unity 资源 之 Pop It 3D 解压玩具与双人AI游戏 Unity 资源包分享
  • linux离线安装mysql8(单机版)
  • 【Python】快速创建一个简易 HTTP 服务器(http.server)