目录
代码中使用的设计模式总结
- 前言
- 常见的23种设计模式
- Singleton模式(单例模式)
- 理论
- Spring中创建的Bean
- Prototype模式(原型模式)
- 理论
- Spring中创建的Bean
- Builder模式(构造器模式)
- 理论
- @Builder实现了构造器模式
- 参考
- Proxy模式(代理模式)
- 理论
- Spring AOP 实现了代理模式
- Factory模式(工厂模式)
- Spring IOC 实现了工厂模式
- Observer 模式(观察者模式)
- 理论
- Spring中使用
- Adapter 模式(适配器模式)
- 理论
- Spring中使用
- Wrapper 模式(装饰器模式)
- 理论
- Spring中使用
- 参考
文章所属专区 日积月累
前言
我们知道,常见的有23种设计模式,我们在代码编写时可能有意无意会用到,或者使用一些框架,注解,插件时使用到,所以特此做一篇总结。
常见的23种设计模式
创建型模式:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式
结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式
行为型模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
Singleton模式(单例模式)
理论
单例模式是一个创建型模式,一个类只有一个实例,并提供一个访问它的全局访问点,可以直接访问,不需要实例化。
Spring中创建的Bean
Spring中创建的Bean默认都是单例的。
Prototype模式(原型模式)
理论
原型模式是一个创建型模式,用于创建重复对象,同时又能够保证其性能。
Spring中创建的Bean
Spring中创建的Bean制定其类型为prototype。
Builder模式(构造器模式)
理论
构造器模式是一个创建型模式,它的主要思想是将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建出不同的表示。
@Builder实现了构造器模式
在Lombok插件中 @Builder 注解实现了构造器模式,假设在一个类上使用了@Builder注解,那么编译后,在这个类的class文件中会多出一个builer()方法和一个这个类的 public static xxx builder的静态内部类,持有要构建对象的所有属性,设置属性的方法都返回当前Builde实例this,这样可以流式的设置属性而不用一个个set了。
流式的设置属性例子(看着是不是方便了许多):
User user = User.builder()
.name("Tom")
.age(25)
.email("tom@example.com")
.build();
参考
Lombok的Builder与构造者模式
Proxy模式(代理模式)
理论
代理模式是一种结构型模式,它为其他对象提供一种代理以控制对这个对象的访问。
Spring AOP 实现了代理模式
Spring中的AOP允许开发者在不修改现有代码的情况下,向程序中新增新的功能(前置通知、后置通知、异常通知、返回通知还是环绕通知等)。Spring中的AOP基于代理模式,首先会自定义一个注解;其次,定义一个切面(Aspect)类,在切面中定义切点和通知,切点(方法的拦截规则),在使用了这个注解的方法会被拦截下来,拦截下来之后,就可以进行前置通知、后置通知、异常通知、返回通知还是环绕通知等。
Factory模式(工厂模式)
##理论
工厂模式是一种创建型模式,它提供了一种创建对象的最佳方式,在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过一个共同的接口来指向新创建的对象。
Spring IOC 实现了工厂模式
在Spring中通过BeanFactory 个ApplicationContext创建Bean对象。Spring中 通过IOC容器来控制对象,而无需再由使用者控制。
Observer 模式(观察者模式)
理论
观察者模式是一种行为型设计模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,其所有依赖者都会收到通知并自动更新。
Spring中使用
Listener,event,multicast。
Adapter 模式(适配器模式)
理论
适配器模式是一种结构型设计模式,它是作为两个不兼容的接口之间的桥梁,将一个类的接口转化成客户希望的另一接口。
Spring中使用
Adapter ,HandlerAdapter。
Wrapper 模式(装饰器模式)
理论
装饰器模式是一种结构型设计模式,许向一个现有的对象添加新的功能,同时又不改变其结构。
Spring中使用
BeanWrapper。
参考
JAVA 中常用的设计模式,含案例和注释
23种设计模式?一目了然!
设计模式:代理模式是什么,Spring AOP还和它有关系?
给个三连吧 谢谢谢谢谢谢了