首页/新闻资讯/正文详情

设计模式9——抽象工厂

发布时间:2026/9/24 13:31:30 来源:云帆数科 栏目:资讯中心
设计模式9——抽象工厂
动机在软件设计中经常面对一系列相互依赖的对象的创建工作由于需求变化经常面对更多对象的创建工作。1. 引入问题classEmployeeDB{public:DBConnectFactory*dbConnectFact;DBCommandFactory*dbCmdFact;public:vectorEmployeeInfoGetEmployee(){DBConnect*connectiondbConnectFact-DBConnectObjCreate();connection-ConnectNet(ip:192.168.0.1);DBCommand*commanddbCmdFact-DBCommandObjCreate();command-Command(SELECT * FROM TENNER);}}这里使用了工厂方法但存在以下问题1调用者需要维护多个工厂比较繁琐。2如果DBConnectFactory和DBCommandFactory是不匹配的工厂则执行会失败。2. 优化同一厂商生产不同零件的工厂合并为一个。// 工厂基类classDBOptFactory{public:virtualDBConnection*DBConnectObjCreate()0;virtualDBCommand*DBCommandObjFactory()0;};// 具体工厂classSqlConnectFactory:publicDBConnectFactory{public:virtualDBConnection*DBConnectObjCreate(){returnnewSqlDBConnection();}virtualDBCommand*DBCommandObjCreate(){returnnewSqlDBCommand();}};如此以来最终的代码如下classEmployeeDB{public:DBOptFactory*dbOptFact;public:vectorEmployeeInfoGetEmployee(){DBConnect*connectiondbOptFact-DBConnectObjCreate();connection-ConnectNet(ip:192.168.0.1);DBCommand*commanddbOptFact-DBCommandObjCreate();command-Command(SELECT * FROM TENNER);...}}多态就是要实现抽象抽象工厂就是一种不止生产一种具体类型对象的工厂各种对象都可以生产。

相关推荐

Flask Overviewses 框架概述
Flask Overviewses 框架概述

Flask 是 Python 中广泛使用的 Web 框架之一,因其轻量、易用且灵活的特性,特别适合新手及小型项目的快速开发。Flask 简单却功能强大,适合从零开始构建 Web 应用,并支持多种扩展来应对复杂需求。学习 Flask,可以帮助掌握 Web 开发的基本概念、路由控制、模板渲染及表单处理… · 2026/9/24 13:31:30

洗碗机BLDC水泵EMC整改:高集成驱动方案与PCB布局实战
洗碗机BLDC水泵EMC整改:高集成驱动方案与PCB布局实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/24 13:31:30

Flask Router 路由
Flask Router 路由

在使用 Flask 开发 Web 应用时,路由系统是其中最重要的部分之一。Flask 路由允许将 URL 与视图函数关联起来,使应用可以根据用户请求的 URL 动态地执行相应的代码逻辑。熟练掌握 Flask 路由设置可以有效提升开发效率和代码结构的清晰度。 本教程将详细讲解 Flask 路由的基本… · 2026/9/24 13:31:30

【企业智能体开发】实现任务规划与可控的工具调用
【企业智能体开发】实现任务规划与可控的工具调用

小林的投屏问题进入第二轮:她已经说明使用线缆,服务台查到了适用指引,却在尝试后仍看不到画面。此时如果 Agent 只会“调用下一个工具”,它可能重复检索同一篇资料,甚至在员工未确认时直接建单。真正的任务规划,是把目标拆成有前置条件、有完成证据、有退出路径的少量步骤… · 2026/9/24 14:02:12

【企业智能体开发】管理会话上下文与任务状态
【企业智能体开发】管理会话上下文与任务状态

小林已经把“线缆连接、A301、屏幕无信号”说清楚,也按指引试过了。她离开聊天窗口去检查设备,几分钟后回来输入:“还是不行。”如果 Agent 只记得最后四个字,就可能重新询问房间号;如果把整段聊天原样塞回模型,却没有明确的任务状态,也可能误以为已经创建了工单。 本篇… · 2026/9/24 14:02:05

【企业智能体开发】用结构化输出约束智能体决策
【企业智能体开发】用结构化输出约束智能体决策

演示服务台时,小林说“A301 投屏没有画面”。模型给出一段看似热心的回答:“先问连接方式,查一下设备说明;若不行,就创建工单。”这段话适合人阅读,却不适合程序直接执行:它同时包含追问、查询和写入三个动作,而且没有说明什么时候获得员工确认。 企业 Agent 需要把“… · 2026/9/24 14:02:05

【企业智能体开发】建立测试集与回归评测流程
【企业智能体开发】建立测试集与回归评测流程

服务台试点一周后,团队准备更换模型,并改进投屏指引的切分方式。演示对话看起来更自然了,小林的问题却可能出现新错误:原来会先追问连接方式,现在直接推荐不适用步骤;原来会在建单前确认,现在把“帮我处理”误当成同意。没有固定的测试集,每一次“优化”都可能悄悄破坏… · 2026/9/24 14:02:05

【企业智能体开发】设计可替换的模型调用适配层
【企业智能体开发】设计可替换的模型调用适配层

小林的投屏求助已经能在演示循环里走完“追问—查指引—回答”。试点时,团队却遇到一个常见变化:同一套服务台,有些请求需要较强的理解能力,有些只需完成简单分类;某个模型接口维护时,还需要切换到备用服务。如果业务代码里到处都是某家模型的请求字段、消息格式和错误码… · 2026/9/24 14:02:05

【企业智能体开发】用 Python 实现最小智能体执行循环
【企业智能体开发】用 Python 实现最小智能体执行循环

小林在会议室提交“投屏没有画面”之后,服务台先问连接方式;她回答“线缆连接”后,系统才查适用指引并给出建议。这不是一次模型调用就能完成的问答,而是一段根据中间结果改变下一步的任务。若只把全部历史对话反复塞给模型,程序仍然不知道何时该追问、何时能调用工具、何… · 2026/9/24 14:02:05

基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程

简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13

1D-CNN时间序列建模实战:从Conv1d原理到工业落地
1D-CNN时间序列建模实战:从Conv1d原理到工业落地

简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26

柔软的L:汉语语流中被忽视的舌肌张力控制
柔软的L:汉语语流中被忽视的舌肌张力控制

1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码