新闻详情

新闻详情

首页 / 资讯中心 / 详情

Java工程师必会的五种设计模式,第二种写代码时天天用

发布时间:2026/9/9 9:03:50来源:尧图网络
Java工程师必会的五种设计模式,第二种写代码时天天用
写Java代码三年了你有没有遇到过这样的场景一个类里塞了十几个if-else每加一个新功能就要改一堆老代码对象创建逻辑散落在系统各处改个构造参数要改几十个文件说好的“高内聚低耦合”代码却越写越拧巴。设计模式不是八股文是前人踩过无数坑之后总结出来的“最佳实践”。掌握下面五种模式你的代码质量会肉眼可见地提升——尤其是第二种你可能每天都在用它却不知道它叫工厂模式。一、单例模式全局唯一的“独苗”单例模式确保一个类在整个程序运行期间只有一个实例并提供全局访问点。实现方式饿汉式类加载时初始化线程安全但可能浪费资源、懒汉式延迟加载首次使用时创建、双重检查锁兼顾延迟加载和线程安全、静态内部类、枚举单例。java复制下载public class Singleton { private static volatile Singleton instance; private Singleton() {} public static Singleton getInstance() { if (instance null) { synchronized (Singleton.class) { if (instance null) { instance new Singleton(); } } } return instance; } }应用场景数据库连接池、日志记录器、配置管理器、线程池。这些组件如果被重复创建轻则浪费资源重则导致数据不一致。别不信——我见过一个项目因为日志管理器被new了十几次日志文件同时被多个实例写入排查了一整天。二、工厂模式每天都在用你可能不知道它叫工厂这就是那个“写代码时天天用”的模式。工厂模式的核心思想是“创建与使用分离”——把对象的创建逻辑封装在工厂里客户端只管用不用管怎么造。生活类比你去汽车4S店提车不需要知道发动机怎么组装、轮胎怎么安装直接从工厂提车就行。工厂模式分三种形态简单工厂一个工厂根据参数创建不同对象最常用但新增产品要改工厂代码工厂方法每个产品有自己的工厂子类符合开闭原则但类数量翻倍抽象工厂生产一整个产品族比如不同操作系统的UI组件java复制下载// 简单工厂运算器工厂 public class OperationFactory { public static Operation create(String type) { switch (type) { case : return new AddOperation(); case -: return new SubtractOperation(); default: throw new IllegalArgumentException(); } } }实际工作中Spring的BeanFactory就是工厂模式的经典体现。你每天都在用Autowired注入对象背后的BeanFactory默默帮你创建了所有Bean——这就是工厂模式你天天在用只是不知道它叫这个名字。三、策略模式消灭if-else的利器当你的代码里出现大量if-else或switch-case来判断走哪种逻辑时策略模式就该上场了。策略模式定义了一系列算法将每个算法封装起来使它们可以互相替换。核心角色抽象策略接口、具体策略实现类、环境类持有策略引用调用策略方法。java复制下载// 支付策略接口 public interface PaymentStrategy { void pay(double amount); } // 微信支付 public class WechatPayment implements PaymentStrategy { Override public void pay(double amount) { System.out.println(使用微信支付 amount 元); } } // 环境类购物车 public class ShoppingCart { private PaymentStrategy paymentStrategy; public void setPaymentStrategy(PaymentStrategy strategy) { this.paymentStrategy strategy; } public void checkout(double amount) { paymentStrategy.pay(amount); } }应用场景支付系统微信/支付宝/银行卡、数据校验规则、缓存策略LRU/LFU/FIFO、促销活动计算。工厂策略组合使用更是消除if-else的王炸组合。四、观察者模式事件驱动的基石当一个对象状态变化时所有依赖它的对象自动收到通知。这就是观察者模式——发布-订阅机制的核心实现。生活类比你关注了一个微信公众号号主每次发文章所有关注者都会收到推送。java复制下载// 观察者接口 public interface Observer { void update(float temperature, float humidity); } // 被观察者气象站 public class WeatherStation { private ListObserver observers new ArrayList(); private float temperature; public void registerObserver(Observer o) { observers.add(o); } public void setMeasurements(float temp) { this.temperature temp; notifyObservers(); // 状态变化通知所有观察者 } private void notifyObservers() { for (Observer o : observers) { o.update(temperature, humidity); } } }应用场景GUI事件处理、消息通知系统、股票行情推送、数据监控。Spring的ApplicationEvent和ApplicationListener就是观察者模式的典型实现。五、装饰器模式比继承更灵活的扩展方式想给一个对象添加新功能又不想修改原代码装饰器模式通过动态包装对象的方式添加功能用组合替代继承。Java I/O流是装饰器模式的经典应用——new BufferedInputStream(new FileInputStream(data.txt))层层装饰灵活组合。java复制下载// 组件接口 public interface Coffee { String getDescription(); double cost(); } // 具体组件 public class SimpleCoffee implements Coffee { Override public String getDescription() { return Simple Coffee; } Override public double cost() { return 1.0; } } // 装饰者加牛奶 public class MilkDecorator implements Coffee { private final Coffee coffee; public MilkDecorator(Coffee c) { this.coffee c; } Override public String getDescription() { return coffee.getDescription() , Milk; } Override public double cost() { return coffee.cost() 0.5; } }应用场景为图形组件添加边框/滚动条、Java I/O流的多层处理、为业务逻辑添加日志/缓存/权限校验。写在最后设计模式的价值不在于“你会背几个名字”而在于你能否在合适的场景选对合适的模式。单例模式管好全局唯一资源工厂模式解耦对象的创建和使用策略模式消灭满屏的if-else观察者模式构建松耦合的事件系统装饰器模式灵活扩展对象功能。这五种模式覆盖了Java开发中80%以上的设计问题。特别是工厂模式——你可能每天都在Spring的Autowired里用着它却从没意识到它的存在。下次写代码时不妨停下来想一想“这个对象创建逻辑能不能用工厂模式封装一下这段if-else能不能用策略模式重构”别等到代码烂到改不动了才想起设计模式——那时候重构的成本已经高得吓人了。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

福建省SHP数据实战:从乱码、坐标系到叠加分析的完整流程 2026/9/9 9:37:17

福建省SHP数据实战:从乱码、坐标系到叠加分析的完整流程

简介:这份SHP格式的地理信息数据包,涵盖福建省省、市、县三级行政区划边界,以及道路网与铁路网线性要素,面向GIS开发者、城乡规划与交通研究人员。数据采用Shapefile标准组织,包含几何与属性信息,并附坐标参…

阅读更多 →
OpenRouter最新大模型统计:国产模型快速追赶与选型实践 2026/9/9 9:37:17

OpenRouter最新大模型统计:国产模型快速追赶与选型实践

OpenRouter最新大模型使用统计及变化趋势(国产大模型的快速追赶)我养成了一个习惯:每个月底把OpenRouter后台的用量数据拉出来过一次,看过去30天里大家都在调哪些模型、请求量怎么分布、哪些模型被加了白名单又悄悄被踢出路由。这…

阅读更多 →
humanizer技能:让AI文案重获人类语言指纹 2026/9/9 9:37:17

humanizer技能:让AI文案重获人类语言指纹

1. 项目概述:这不是一个工具,而是一场表达权的回归最近在多个技术社区、设计论坛和内容创作群组里,“humanizer”这个词出现的频率高得反常——它不像传统软件名那样带着版本号或公司前缀,也不像算法术语那样冷硬抽象。我第一次在…

阅读更多 →
React项目中Highcharts图表集成实战:从选型到性能优化 2026/9/9 9:37:17

React项目中Highcharts图表集成实战:从选型到性能优化

我大概统计了一下自己做过的React数据可视化项目,只要涉及图表需求,超过一半的同事第一反应是“装一个ECharts吧”。但如果你接手的项目是国际化产品、对浏览器兼容性有硬指标,或者对方是一家外企、金融公司,那Highcharts的出现频…

阅读更多 →
从LIMS到科学数据底座:大分子药物实验室的AI4S数据基石 2026/9/9 9:37:17

从LIMS到科学数据底座:大分子药物实验室的AI4S数据基石

大分子药物,单抗、双抗、ADC这些,研发和生产的复杂度跟传统小分子化学药完全是两个世界。团队规模翻倍,实验数据量爆炸式增长,但管理方式如果还停留在Excel表格加纸质记录本的时代,问题会像滚雪球一样越来越大。我见过…

阅读更多 →
HLW8032参考设计深度解析:电能计量芯片从采样电路到量产校准实战要点 2026/9/9 9:34:16

HLW8032参考设计深度解析:电能计量芯片从采样电路到量产校准实战要点

简介:HLW8032参考设计资料V10是一份面向嵌入式开发者与物联网工程师的完整参考包,围绕HLW8032高性能微控制器,系统覆盖硬件设计、外围电路选型、固件开发与调试流程,尤其适合正在搭建智能硬件或IoT节点,并希望快速完成…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞