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

第1篇:一段 if-else 的代码,为什么成了“屎山”?

第1篇:一段 if-else 的代码,为什么成了“屎山”?

摘要:一段 if-else 创建对象的代码为何被称为“屎山”?本文从真实痛点出发,揭示工厂模式如何通过封装对象创建过程实现解耦,并附上场景判断表,帮你快速决策何时使用工厂模式。

本文是《Java 23 种设计模式:从踩坑到精通》工厂模式长文的扩充短文第1篇,帮助你碎片化掌握核心知识点。


你有没有写过这样的代码?

if(type.equals("sms")){sender=newSmsSender();}elseif(type.equals("email")){sender=newEmailSender();}elseif(type.equals("wechat")){sender=newWechatSender();}

每次新增一种消息渠道,就得在这段if-else后面再加一行。代码越写越长,维护越来越痛苦。更可怕的是,如果有一天SmsSender的构造方法改了,所有写new SmsSender()的地方都得跟着改,一不小心就会漏掉。

工厂模式正是为此而生

它把“创建对象”这件事从业务代码中抽离出来,交给专门的工厂类处理。调用方只需要告诉工厂“我要什么”,工厂返回一个符合接口的对象,至于具体是怎么创建的,调用方根本不需要关心。


你的场景该不该用工厂模式?
判断标准是 → 用工厂模式否 → 用其他方式
创建对象的逻辑分散在多处,且经常变化
需要根据运行时条件动态决定创建哪种对象
希望客户端代码只依赖抽象接口,不依赖具体类
产品种类极少(≤2种)且永远不会变直接 new 即可

一句话总结:创建逻辑复杂、容易变化、需要解耦 → 用工厂模式,告别硬编码。


📖 完整长文入口:​ 本文是工厂模式扩充系列的第1篇。如果你想一次性阅读完整内容(含UML、三种工厂对比、框架源码、面试追问等),请查看原长文:
👉 《Java 23 种设计模式:从踩坑到精通 | 工厂模式》
🔗 系列导航:
上一篇:无(本篇为首篇)
下一篇:第2篇:简单工厂模式——把if-else搬个家
返回:《工厂模式 · 扩充系列》目录
返回:《Java 23 种设计模式:从踩坑到精通 》总目录

http://www.jsqmd.com/news/1133801/

相关文章:

  • 团队共享 GPT5.5 API 额度设置方法
  • Symfony安全加固实战:防御会话劫持与CSRF攻击的深度指南
  • SpringBoot+Mybatis数据安全插件:基于拦截器实现字段自动加解密与脱敏
  • RootSIFT:改动最小,收益最大#
  • iOS平台JUnit测试实战:J2ObjC跨平台测试框架原理与配置指南
  • 基于Docker与Kubernetes的WebdriverIO自动化测试环境容器化实践
  • 手机号码定位神器:3分钟快速查询归属地完整指南
  • Wireshark+Fiddler手机抓包全攻略:从环境搭建到HTTPS解密与深度分析
  • PointPillars 3D检测实战:KITTI数据集训练与评估,mAP达73.3%(附PyTorch代码)
  • 【复现】基于改进扩散模型的高海拔地区新能源高波动出力场景生成方法(Python代码实现)
  • AI模型测试:从确定性断言到统计判定的工程实践
  • 图文验证码系统设计:从原理到Spring Boot + Redis实战实现
  • 【操作系统】磁盘调度算法(FCFS/SSTF/SCAN/C-SCAN)
  • 语法全对,物理全错:2026年最危险的AI幻觉,正在污染你的仿真库
  • Android应用安全加固实战:代码混淆、资源加密、SO加固与完整性校验
  • Unity游戏汉化终极指南:XUnity Auto Translator让你畅玩全球游戏
  • GPT-5.5新特性对开源搜索引擎有什么冲击?GPT-5.5新特性对开源搜索引擎的冲击与机遇
  • 从CNN到Transformer:五大神经网络架构的本质与选型指南
  • Python爬虫如何绕过TLS指纹检测?curl_cffi实战指南
  • 基于智普清言与LangChain构建私有化AI知识库:从架构设计到部署实践
  • 基于MCP协议为AI编程助手集成逆向分析能力:从静态反编译到动态Hook的完整实践
  • 有个人似乎想要破解我的VIP功能?-----软件故障
  • iOS 17+隐私合规实战:从Reachability案例解析PrivacyInfo.xcprivacy配置
  • 微信小程序真机网络请求失败(600001)排查指南:从域名配置到抓包实战
  • Java安全随机数生成:从Random漏洞到SecureRandom实战
  • 寄生感知共质心布局生成:集成布线优化的 3 步单元电容尺寸最小化方法
  • 终极Unity游戏汉化指南:XUnity Auto Translator让你轻松玩转外语游戏
  • VOT挑战赛 EAO 指标详解:从数学公式到Python代码实现5步拆解
  • 【复现】配电网对分布式电源和电动汽车的承载力评估及提升方法综述(Matlab代码实现)
  • Cerast 智能:可查找域名暴露路径与配置错误,支持子字符串搜索