【2013-10-16】设计模式学习笔记:工厂模式
[历史归档]本文原发布于 cstriker1407.info 个人博客内容为历史存档仅供参考。发布时间2013-10-16 标题设计模式学习笔记工厂模式分类编程 / 设计模式 / java 标签设计模式·java·工厂模式设计模式学习笔记工厂模式简单工厂模式1. 定义统一接口供各元素实现2. 定义各元素3. 定义简单工厂负责元素的创建抽象工厂模式1. 定义各平台统一接口2. 在各平台上实现接口3. 定义上层操作接口屏蔽调用者与下层的直接依赖4. 上层调用示例备注工厂模式将对象的创建与使用分离调用者只面向接口编程无需关心具体实现类的实例化。示例代码https://github.com/cstriker1407/design_pattern简单工厂模式1. 定义统一接口供各元素实现interfaceonSender{publicvoidSender();}2. 定义各元素classMailSenderimplementsonSender{OverridepublicvoidSender(){System.out.println(Mail Sender);}}classSMSSenderimplementsonSender{OverridepublicvoidSender(){System.out.println(SMS Sender);}}3. 定义简单工厂负责元素的创建publicclassSimplefactory1{publicstaticonSendercreateOnSender(Stringtype){if(Mail.equals(type)){returnnewMailSender();}if(SMS.equals(type)){returnnewSMSSender();}returnnull;}publicstaticonSendercreateMail(){returnnewMailSender();}publicstaticonSendercreateSMS(){returnnewSMSSender();}}抽象工厂模式抽象工厂模式类似跨平台应用的设计思路上层只依赖抽象接口具体平台实现由 Provider 决定。1. 定义各平台统一接口interfaceOperateFun{publicvoiddraw();publicvoidwrite();}2. 在各平台上实现接口classWinimplementsOperateFun{Overridepublicvoiddraw(){System.out.println(win draw);}Overridepublicvoidwrite(){System.out.println(linux draw);}}classLinuximplementsOperateFun{Overridepublicvoiddraw(){System.out.println(linux draw);}Overridepublicvoidwrite(){System.out.println(linux write);}}3. 定义上层操作接口屏蔽调用者与下层的直接依赖interfaceProvider{publicOperateFunproduce();}classWinProviderimplementsProvider{OverridepublicOperateFunproduce(){returnnewWin();}}classLinuxProviderimplementsProvider{OverridepublicOperateFunproduce(){returnnewLinux();}}4. 上层调用示例publicclassAbstractFactory1{publicstaticvoidtest(){ProviderprovidernewWinProvider();provider.produce().draw();providernewLinuxProvider();provider.produce().draw();}}备注工厂模式定义后续补充。

相关新闻

终极高效Photoshop图层批量导出方案:开源脚本实现3倍速自动化工作流

终极高效Photoshop图层批量导出方案:开源脚本实现3倍速自动化工作流

终极高效Photoshop图层批量导出方案:开源脚本实现3倍速自动化工作流 【免费下载链接】Photoshop-Export-Layers-to-Files-Fast This script allows you to export your layers as individual files at a speed much faster than the built-in script from Adobe. …

2026/6/25 18:55:52阅读更多 →
【Python进阶】Type Hinting 的“外挂”:一文读懂 Annotated 与 Reducer

【Python进阶】Type Hinting 的“外挂”:一文读懂 Annotated 与 Reducer

此文章专门用来解释 Annotated 以及它在 LangGraph/LangChain 状态定义中的核心作用。【Python进阶】Type Hinting 的“外挂”:一文读懂 Annotated 与 Reducer 在 Python 的类型提示(Type Hints)世界里,我们习惯了写 x: int 或 na…

2026/6/25 18:55:52阅读更多 →
零基础想要系统学习 Agent,千万别错过这两个开源项目!

零基础想要系统学习 Agent,千万别错过这两个开源项目!

入门:Learn Claude Code 💻项目 🌟Start 数:54.7k 很多同学在初学 Agent 时,会去尝试 LangChain 等重型框架,结果被复杂的封装搞得晕头转向,最后只学会了调 API、拼流程,根本没搞懂 …

2026/6/25 18:55:52阅读更多 →
直击VivaTech 2026:远景发布“Mission Gobi”,用AI驯服戈壁风光,为算力“解渴”

直击VivaTech 2026:远景发布“Mission Gobi”,用AI驯服戈壁风光,为算力“解渴”

当大模型厂商为GPU“一卡难求”而焦虑时,一个更根本的瓶颈正在浮现——电力。在巴黎VivaTech 2026现场,远景科技集团亮出了一张雄心勃勃的“技术牌”:Mission Gobi计划。其核心目标,是利用自研的AI电力系统,将全球太阳…

2026/6/25 20:11:13阅读更多 →
Android应用抓包实战:绕过反代理与SSL证书绑定检测

Android应用抓包实战:绕过反代理与SSL证书绑定检测

1. 项目概述:当APP安全机制成为“拦路虎”在移动应用安全测试或逆向分析的过程中,我们常常会遇到一个令人头疼的局面:当你兴致勃勃地打开抓包工具,准备一窥APP的网络通信时,却发现应用要么直接闪退,要么弹出…

2026/6/25 20:11:13阅读更多 →
告别iTunes臃肿:如何在Windows上快速安装苹果设备驱动

告别iTunes臃肿:如何在Windows上快速安装苹果设备驱动

告别iTunes臃肿:如何在Windows上快速安装苹果设备驱动 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/gh_mir…

2026/6/25 20:11:13阅读更多 →
HDMI数据的接收发送实验(十五)

HDMI数据的接收发送实验(十五)

一、概况 在数据传输过程中,时钟或数据会在传输过程中发生偏移,所以用了PLL的时钟动态相移配置,这样就可以实现时钟与数据的对齐,接下来讲述怎样配置PLL时钟来实现动态相移。 二、IP核配置 步骤1:打开VIVADO的clocking…

2026/6/25 20:11:13阅读更多 →
捕蚊灯真的有用吗?室内灭蚊器哪个牌子好?2026精选高性价比灭蚊器汇总分享!任你选!

捕蚊灯真的有用吗?室内灭蚊器哪个牌子好?2026精选高性价比灭蚊器汇总分享!任你选!

​灭蚊器哪个牌子好?当心!不专业灭蚊器比蚊子更“要命”全球多地拉响基孔肯雅热疫情警报——这种由伊蚊传播的病毒性疾病,已在南美、东南亚等地造成大规模感染,患者突发高热、关节剧痛,严重者症状可持续数月之久。世界…

2026/6/25 20:11:13阅读更多 →
Prompt Injection攻击原理与三层纵深防御实战

Prompt Injection攻击原理与三层纵深防御实战

1. 项目概述:当大模型“听错话”时,谁在替你担风险?Prompt Injection(提示词注入)这个词,现在听起来可能还带着点技术圈的陌生感,但它的实际危害,已经不亚于十年前第一次听说SQL注入…

2026/6/25 20:06:12阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/25 9:39:54阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/25 2:52:24阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/25 9:01:34阅读更多 →
面试辅助工具横评:我试了5款AI面试工具,最后留下了OfferGo

面试辅助工具横评:我试了5款AI面试工具,最后留下了OfferGo

上半年跳槽,面了十几家公司。说句实话,不是能力不行,是面试现场太容易崩了。 明明准备了一周,面试官换个问法脑子就一片白。面完之后那个懊悔——其实我会的。 后来开始试市面上的AI面试辅助工具。前前后后装了5款,踩…

2026/6/25 11:52:11阅读更多 →
Claude Code 提示词设计:从塑造“人格”到建立“状态机”

Claude Code 提示词设计:从塑造“人格”到建立“状态机”

当前 AI Agent 设计的核心痛点在于:大模型不缺写代码的能力,缺的是克制力、边界感和验证逻辑。Prompt 不再是用来塑造“人格”的,而是用来建立“状态机(State Machine)”和“行为门禁(Guardrails&#xff0…

2026/6/25 11:52:11阅读更多 →
MC-037 | 自定义 Skill 开发:创建你的AI能力模块

MC-037 | 自定义 Skill 开发:创建你的AI能力模块

MONKEYCODE 教程系列 MonkeyCode教程及推广系列 MC-037 自定义 Skill 开发:创建你的AI能力模块 >官网链接注册更放心哦https://monkeycode-ai.com/?ic019e0aed-c823-783c-b08a-4f030f891e4e 系列: 不爱土豆唯爱马铃薯 MonkeyCode 教程系列 字数: 约 1400 字…

2026/6/25 11:52:11阅读更多 →