哪些设计模式,你使用过哪些设计模式

Java框架中运用了多种设计模式,以下是一些具体的例子以及它们在框架中的应用:

单例模式(Singleton Pattern)

确保一个类只有一个实例,并提供全局访问点。例如,Java中的Runtime类使用了单例模式,保证整个应用程序中只存在一个Runtime对象。在Spring框架中,默认的bean作用域也是单例模式,确保每个bean只有一个实例。

工厂模式(Factory Pattern)

将对象的创建和使用分离,通过工厂类来创建对象。Java中的Calendar类使用工厂模式,通过getInstance()方法获取对象。Spring提供了BeanFactory和ApplicationContext等工厂模式的实现,用于创建和管理对象的实例。

观察者模式(Observer Pattern)

定义对象之间的一对多依赖关系,当一个对象状态改变时,其所有依赖者都会收到通知并自动更新。Java中的事件监听机制就是使用了观察者模式。Spring事件机制也是基于观察者模式实现的,通过事件源和监听器来实现对象之间的解耦。

适配器模式(Adapter Pattern)

将一个类的接口转换为客户端所期望的另一个接口,使得原本不兼容的类能够一起工作。Java中的InputStreamReader类将字节流转换为字符流。在Spring MVC中,处理器适配器就是基于适配器模式实现的,将不同类型的处理器适配到统一的处理器接口上。

策略模式(Strategy Pattern)

定义一系列算法,并将每个算法封装起来,使它们可以互相替换。Java中的Comparator接口是策略模式的应用。Spring的BeanPostProcessor是基于策略模式实现的,通过在不同的时机调用不同的策略方法来实现对bean的后置处理。

模板方法模式(Template Method Pattern)

定义一个算法的骨架,将具体步骤的实现延迟到子类中。Java中的Servlet中的doGet()和doPost()方法使用了模板方法模式。Spring的JdbcTemplate也是基于模板方法模式实现的,通过定义抽象的模板方法和具体的子类实现来实现数据访问的流程控制。

相关推荐
小猪佩奇TONY11 小时前
C++ 学习(3) ----设计模式
c++·学习·设计模式
zhulangfly1 天前
轻松理解智能体设计模式(1/6):提示链(Prompt Chaining)
设计模式·prompt chaining
da_vinci_x1 天前
2D角色动画进阶:Spine网格变形与序列帧特效的混合工作流
游戏·设计模式·设计师·photoshop·spine·游戏策划·游戏美术
代码萌新知2 天前
设计模式学习(五)装饰者模式、桥接模式、外观模式
java·学习·设计模式·桥接模式·装饰器模式·外观模式
charlie1145141912 天前
理解C++20的革命特性——协程支持2:编写简单的协程调度器
c++·学习·算法·设计模式·c++20·协程·调度器
笨手笨脚の2 天前
设计模式-适配器模式
设计模式·适配器模式·结构型设计模式
青草地溪水旁2 天前
第五章:原型模式 - 克隆大法的大师
c++·设计模式·原型模式
1710orange2 天前
java设计模式:静态代理模式
java·设计模式·代理模式
我真的是大笨蛋2 天前
开闭原则详解(OCP)
java·设计模式·性能优化·开闭原则·设计规范
1710orange2 天前
java设计模式:动态代理
java·开发语言·设计模式