首页 > 其他分享 >【设计模式(二)】创建型模式--抽象工厂模式

【设计模式(二)】创建型模式--抽象工厂模式

时间:2024-07-05 14:11:00浏览次数:16  
标签:-- 创建 模式 工厂 抽象 产品 米苏 设计模式

创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节。

抽象工厂模式也是⼀种创建型设计模式,提供了一个创建一系列相关或相互依赖对象接口,而无需指定它们具体的类

抽象工厂模式与工厂方法模式的区别:工厂方法模式的具体工厂实现类只负责单一的产品,如果有一些相关的多类产品,就需要分别创建多个工厂实现类。但产品之间是相关的,因此可以使用抽象工厂模式在具体工厂类生产多个相关的产品

抽象工厂模式的主要角色如下:

  • 抽象工厂(Abstract Factory):提供了创建产品的接口,它包含多个创建产品的方法,可以创建多个不同等级的产品。
  • 具体工厂(Concrete Factory):主要是实现抽象工厂中的多个抽象方法,完成具体产品的创建。
  • 抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能,抽象工厂模式有多个抽象产品。
  • 具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它 同具体工厂之间是多对一的关系。

现咖啡店业务发生改变,不仅要生产咖啡还要生产甜点,如提拉米苏、抹茶慕斯等,要是按照工厂方法模式,需要定义提拉米苏类、抹茶慕斯类、提拉米苏工厂、抹茶慕斯工厂、甜点工厂类,很容易发生类爆炸情况。其中拿铁咖啡、美式咖啡是一个产品等级,都是咖啡;提拉米苏、抹茶慕斯也是一个产品等级;拿铁咖啡和提拉米苏是同一产品族(也就是都属于意大利风味),美式咖啡和抹茶慕斯是同一产品族(也就是都属于美式风味)。所以这个案例可以使用抽象工厂模式实现。类图如下

优点:

当一个产品族中的多个对象被设计成一起工作时,它能保证客户端始终只使用同一个产品族中的对象。

缺点:

当产品族中需要增加一个新的产品时,所有的工厂类都需要进行修改。

标签:--,创建,模式,工厂,抽象,产品,米苏,设计模式
From: https://www.cnblogs.com/hudad/p/18284190

相关文章

  • 短网址生成API接口,短链生成 W外链API接口
    1、提供的接口W外链提供接口如下:获取短链分组创建短链分组获取分组下的短链列表生成短链编辑短链删除短链2、签名简介使用前请了解如下事项:API 的签名主要是用于获取身份令牌 AccessToken 时所需必要认证参数在请求需要复杂认证接口的时候,系统会验证 AccessToken......
  • 三菱PLC内部常用的特殊辅助继电器总结
    辅助继电器是plc中数量最多的一种继电器,一般的辅助继电器与继电器控制系统中的中间继电器相似。辅助继电器不能直接驱动外部负载,负载只能由输出继电器的外部触点驱动。辅助继电器的常开与常闭触点在PLC内部编程时可无限次使用。辅助继电器采用M与十进制数共同组成编......
  • 详解Web应用安全系列(8)不足的日志记录和监控
    在Web安全领域,不足的日志记录和监控是一个重要的安全隐患,它可能导致攻击者能够更隐蔽地进行攻击,同时增加了攻击被检测和响应的难度。以下是对Web攻击中不足的日志记录和监控漏洞的详细介绍。一、日志记录不足的问题日志缺失或不完整关键操作未记录:如用户登录、敏感数据......
  • hutool去读excel中数据
     hutool去读excel中数据Hutool是一个Java工具类库,它包含了一些实用的API,包括操作Excel的功能。以下是使用Hutool去读取Excel中数据的示例代码:首先,确保你的项目中已经添加了Hutool的依赖。如果你使用的是Maven,可以在pom.xml中添加如下依赖:<dependency><gr......
  • [操作系统]
    IO多路复用进程进程间通信六种方式管道/消息队列/信号/信号量/共享内存/socket/管道管道分为命名管道和无名管道,在内核中申请一块固定大小的缓冲区,程序拥有写入和读取的权利,都可以看成一种特殊的文件,具有固定的读端和写端,也可以使用普通的read、write等函数。但是它不是......
  • bootstrap-fileinput 使用
    参考文档:http://www.bootstrap-fileinput.com/options.html视频和图片上传和展示:<divclass="form-grouprow"><labelfor="video_path"class="col-sm-2col-form-label"><spanclass="text-danger">*<......
  • 在wsl中部署puppeteer的相关笔记
    二.缺少依赖问题 反复提示缺少各种依赖,到处搜刮一顿操作之后是没问题了,但也不知道哪些是无所谓的aptinstall-ygconf-servicelibc6libcairo2libdbus-1-3libexpat1libfontconfig1libgcc1libgdk-pixbuf2.0-0libglib2.0-0libgtk-3-0libstdc++6libx11-6aptinstall......
  • StackOverflowError堆栈溢出错误
    代码packagecom.yixie.core.log;publicclassSafeLoggerFactory{publicstaticSafeLoggergetLogger(Stringname){returnnewSafeLogger(com.yixie.core.log.SafeLoggerFactory.getLogger(name));}}错误:Instantiationofbeanfailed;nested......
  • 《计算机组成与系统结构(第二版) 裘雪红 李伯成 西安电子科技大学出版社》课后习题答案(
    声明:此系列答案配套《计算机组成与系统结构(第二版)裘雪红李伯成西安电子科技大学出版社》一书相关内容。所有内容为博主个人编辑,仅作参考学习交流之用,转载请注明出处。如发现错误,请联系博主及时勘误。如有侵权行为,博主将立即下架全部内容。240705补充声明:原文发布平台CSD......
  • Android 14.0 开机过滤部分通知声音(莫名其妙的通知声音)
    1.概述 在14.0的系统定制开发产品的中,有时候在系统开机的时候会有一些通知的声音,但是由于系统模块太多,也搞不清楚到底是哪个模块发出的通知声音,所以就需要从通知的流程来屏蔽这些通知声音,接下来看具体怎么实现在开机的时候过滤开机声音的功能2.开机过滤部分通知声音(莫名其......