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

设计模式-工厂方法描述

大家好,我是Client。

天地开辟之初我便诞生了。

publicclassClient{publicstaticvoidmain(String[]args){}}
@startuml class Client @enduml

后来又有两个家伙诞生了,一个是Factory。

interfaceFactory{}

另一个是Product.

interfaceProduct{}
@startuml class Client interface Factory interface Product @enduml

不过他们非常羸弱,被我轻松拿捏,任意驱使。

publicclassClient{publicstaticvoidmain(String[]args){Factoryfactory;Productproduct;}}
@startuml class Client{ + factory:Factory + product:Product } interface Factory interface Product Client o--Factory Client o--Product @enduml

你,Product,以后就是我的产品设计师了。

你,Factory,以后你就负责给我生产产品。

interfaceProduct{abstractvoidfunction();}
interfaceFactory{abstractProductcreateProduct();}
@startuml class Client{ + factory:Factory + product:Product } interface Factory{ +{abstract} createProduct():Product } interface Product{ +{abstract} function() } Client o--Factory Client o--Product @enduml

有一天我想吃苹果,我就给Product说,“去,给我设计苹果。

Product马不停蹄,立马给我设计了苹果。

classAppleimplementsProduct{@Overridepublicvoidfunction(){System.out.println("你吃了苹果");}}
@startuml class Client{ + factory:Factory + product:Product } interface Factory{ +{abstract} createProduct():Product } interface Product{ +{abstract} function() } class Apple{ + function() } Client o--Factory Client o--Product Product<|..Apple @enduml

Factory连夜赶工,加急建了一个苹果生产工厂开始生产苹果

classAppleFactoryimplementsFactory{@OverridepublicProductcreateProduct(){returnnewApple();}}
@startuml class Client{ + factory:Factory + product:Product } interface Factory{ +{abstract} createProduct():Product } interface Product{ +{abstract} function() } class Apple{ + function(); } class AppleFactory{ + createProduct():Apple } Client o--Factory Client o--Product Product<|..Apple Factory<|..AppleFactory AppleFactory..>Apple @enduml

我不需要知道他们具体是怎么操作的,反正我只要吃到苹果就行了。

publicclassClient{publicstaticvoidmain(String[]args){Factoryfactory;Productproduct;factory=newAppleFactory();product=factory.createProduct();product.function();}}

Product和Factory在我的奴役下熬过了漫长岁月。

有一天我想尝尝100年前的馒头。

Product为我设计了馒头。

classMantou100yearsAgoimplementsProduct{@Overridepublicvoidfunction(){System.out.println("馒头有毒,你死了”);}}
@startuml class Client{ + factory:Factory + product:Product } interface Factory{ +{abstract} createProduct():Product } interface Product{ +{abstract} function() } class Apple{ + function(); } class AppleFactory{ + createProduct():Apple } class Mantou100yearsAgo{ + function } Client o--Factory Client o--Product Product<|..Apple Factory<|..AppleFactory AppleFactory..>Apple Factory<|..Mantou100yearsAgo @enduml

Factory建立了馒头工厂为我生产馒头

classMantouFactoryimplementsFactory{@OverridepublicProductcreateProduct(){returnnewMantou100yearsAgo();}}
@startuml class Client{ + factory:Factory + product:Product } interface Factory{ +{abstract} createProduct():Product } interface Product{ +{abstract} function() } class Apple{ + function(); } class AppleFactory{ + createProduct():Apple } class Mantou100yearsAgo{ + function } class MantouFactory{ + createFactory() } Client o--Factory Client o--Product Product<|..Apple Factory<|..AppleFactory AppleFactory..>Apple Product<|..Mantou100yearsAgo Factory<|..MantouFactory MantouFactory..>Mantou100yearsAgo @enduml

我也算是吃上了100年前的馒头

publicclassClient{publicstaticvoidmain(String[]args){Factoryfactory;Productproduct;factory=newAppleFactory();product=factory.createProduct();product.function();factory=newMantouFactory();product=factory.createProduct();product.function();}}

我死了,世界毁灭了。

http://www.cnnetsun.cn/news/2117452.html

相关文章:

  • 图像配准:多分辨率 ORB + RANSAC 优化
  • 生成式视觉推理:AI从描述到模拟的突破
  • 从质谱数据到科学发现:MZmine 3开源平台的实战指南
  • LLM在软件工程中的应用与挑战
  • 总线与寄存器实验
  • 3步构建企业级Web应用:深入解析ASP.NET Core MVC核心架构
  • 3个步骤,让手机游戏在电脑上玩出PC级体验!QtScrcpy Android投屏完全指南
  • Windows电脑直接运行安卓应用的完整指南:APK安装器使用教程
  • 服务器还没挂你就知道?时间序列才是运维真正的“预知能力”
  • 2026年值得关注的AI大模型接口聚合站推荐:五大优质平台适配不同企业与开发者需求
  • 全球与中国PE离型膜市场:现状剖析与未来趋势前瞻
  • ESP8266项目功耗太高?手把手教你用INA226模块精准测量并优化(从接线到数据分析)
  • 基于开源大模型构建自动化智能体:Open-AutoGLM-SIGI核心解析与实践
  • 终极教程:5分钟让Anki卡片开口说话!AwesomeTTS插件完整指南 [特殊字符]
  • 3步搞定B站缓存视频合并:安卓手机离线观看完整视频带弹幕
  • 系统性思维:从修bug到防bug的认知升级
  • 5个高效技巧:如何快速掌握GDSDecomp逆向工程工具的核心功能?
  • Python函数参数的封包与拆包
  • 揭秘RyzenAdj:解锁AMD移动处理器性能与功耗平衡的三大突破
  • 亿量级裁判文书数据库1985-2021年
  • 【建议收藏】2026年大模型终极风口:AI Agent爆发,程序员/小白入门必看(吃透少走3年弯路)
  • ngx_close_listening_sockets
  • 终极指南:如何在Windows电脑上使用Ryujinx模拟器畅玩Switch游戏
  • Python AI模型推理慢?不是模型问题,是这6类Python运行时开销在 silently kill 你的吞吐——附火焰图诊断模板
  • just-bash:将Bash脚本编译为JavaScript的跨平台自动化解决方案
  • 从CTP到自研L2行情解析引擎:我们用237天重写Python金融协议栈,最终实现<15μs端到端解析延迟(仅限内部技术白皮书节选)
  • 极片涂布产线三菱PLC双通道通讯设计:以太网模块实现HMI+上位机同步交互
  • 保姆级教程:用ESP32和MicroPython驱动1.8寸ST7735S彩屏,5分钟显示你的第一张图片
  • 2026年主流英文会议纪要AI工具实测对比,半路杀出黑马,头部产品差距竟然这么大
  • 如何让30fps视频秒变60fps?Flowframes AI视频插帧完全指南