news 2026/7/5 14:31:41

设计模式——抽象工厂

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
设计模式——抽象工厂

一、概述

抽象工厂模式,作为创建型设计模式中的一员,有着独特的魅力与价值。与我们常见的普通工厂模式相比,它无疑更上一层楼,引入了抽象工厂这一关键概念,同时还涵盖了抽象产品和抽象零件的理念。
普通工厂模式往往聚焦于具体产品的创建,而抽象工厂模式则站在了更高的维度。它将注意力集中在接口层面,而非执着于零件的具体实现细节。这就好比建筑师在设计一座建筑时,更关注各个建筑模块如何按照特定的规则进行组合,而不是每个模块具体是用什么材料打造的。
在抽象工厂模式里,抽象工厂扮演着至关重要的角色。它就像是一位技艺精湛的指挥家,负责将各类抽象零件巧妙地组装成抽象产品。这些抽象零件和抽象产品并非具体的实物,而是一种抽象的概念,代表着一组具有共同特征和行为的对象。通过接口的定义,抽象工厂能够将不同的抽象零件有机地组合在一起,从而构建出满足特定需求的抽象产品。
这种模式的优势在于其高度的灵活性和可扩展性。由于只关注接口,当需要对产品进行修改或扩展时,我们无需对具体的零件实现进行大规模的改动,只需调整接口的定义和组合方式即可。这大大降低了系统的耦合度,提高了代码的可维护性和可复用性。
例如,在软件开发中,我们可以使用抽象工厂模式来创建不同风格的用户界面。抽象工厂可以根据不同的需求,将按钮、文本框等抽象零件组合成具有不同风格的窗口界面,而无需关心每个零件的具体实现细节。这样,当我们需要切换界面风格时,只需更换抽象工厂的实现,而不需要对每个零件的代码进行修改。
总之,抽象工厂模式以其独特的设计理念和强大的功能,为我们在创建复杂对象时提供了一种高效、灵活的解决方案。它让我们能够更加专注于系统的整体架构和功能实现,而不必陷入具体细节的泥潭

二、实现

我们在下面举个实例:

factory: 包含抽象工厂、零件和产品的包

listfactory:包含具体工厂、零件和产品的包

抽象零件:Item类

这个类是Link和Tray的父类。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/5 14:28:58

ConvNeXt 的 torchvision 版本 推理实现

ConvNeXt 的 torchvision 版本 推理实现 flyfish import torch import os from PIL import Image from torchvision import transforms # 引入你自定义的ConvNeXt模型文件(确保和本文件同目录) from convnext_tiny import convnext_tiny# 配置 # 本地…

作者头像 李华
网站建设 2026/7/5 14:24:47

SQL优化

目录 1. 插入数据优化 2.主键优化 3.order by 排序优化 4.group by 分组优化 5.limit优化 count 的几种用法 count(主键) count(字段) count (1) count (*) 7.update语句优化 1. 插入数据优化 1.1 批量插入数据 如果…

作者头像 李华
网站建设 2026/7/5 14:22:29

毕设成品、某宝工作室的水有多深?踩过坑的才敢讲

毕设成品、某宝工作室的水有多深?踩过坑的才敢讲如果你正在闲鱼、某宝、QQ群搜「毕设成品」「一条龙」「包过」—— 先看完这篇再付钱。便宜那几百块,可能换来延毕。一、先说结论:不是成品不能用,是绝大多数你在网上买到的成品&am…

作者头像 李华
网站建设 2026/7/5 14:20:38

如何用scrcpy实现零延迟Android投屏?三大场景让你效率翻倍

如何用scrcpy实现零延迟Android投屏?三大场景让你效率翻倍 【免费下载链接】scrcpy Display and control your Android device 项目地址: https://gitcode.com/GitHub_Trending/sc/scrcpy 还在为手机屏幕太小而烦恼吗?想在电脑上流畅操作Android应…

作者头像 李华