spring的设计模式

spring的设计模式

策略模式

策略模式: 一个接口下有多个实现类,每个实现类处理的情况各不相同。
注意事项:

  • 使用@Component注解对当前类进行标注,将其声明为Spring容器所管理的一个bean;
  • 声明一个返回boolean值的方法,通过这个方法来控制当前实例是否为处理目标request的实例;
  • 声明一个方法用来判断类型;
  • 声明一个方法用于处理业务逻辑;
  • 传一个对象进行,而不是简简单单的基本类型的变量,这样做的好处是后续如果要在Request中新增字段,那么就不需要修改接口的定义和已经实现的各个子类的逻辑;

工厂模式

工厂模式: 定义一个工厂方法,通过传入不同的参数,返回不同的实例,利用该实例来处理业务逻辑。工厂方法的返回值是一个接口,子类实例的业务逻辑则封装在其中,将外层的调用逻辑于具体的子类获取逻辑进行分离。
BeanFactory就是简单工厂模式的体现,用来创建对象的实例;

单例模式

Bean默认就是单例模式

代理模式

Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术;

模板方法

用来解决代码重复的问题。比如. RestTemplate, JmsTemplate, JpaTemplate。

观察者模式

定义对象键一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知被制动更新,如Spring中listener的实现–ApplicationListener。

建造者模式

概念:

  • 为通过一定的参数,通过一定的业务逻辑来最终生成某个对象。如果仅仅只是使用lombok的这种方式,其本质上也还是创建了一个简单的bean,这个与通过getter和setter方式构建一个bean是没有什么大的区别的;
  • 在Spring框架中,使用设计模式最大的问题在于如果在各个模式bean中能够注入Spring的bean,如果能够注入,那么将大大的扩展其使用方式。因为我们就可以真的实现通过传入的简单的几个参数,然后结合Spring注入的bean进行一定的处理后,以构造出我们所需要的某个bean。

使用说明:

  • 在Builder类上必须使用@Scope注解来标注该实例为prototype类型,因为很明显,我们这里的Builder实例是有状态的,无法被多线程共享;
  • 在Builder.build()方法中,我们可以通过传入的参数和注入的bean来进行一定的业务处理,从而得到构建一个所需要的参数;
  • Builder类必须使用static修饰,因为在Java中,如果内部类不用static修饰,那么该类的实例必须依赖于外部类的一个实例,而我们这里本质上是希望通过内部类实例来构建外部类实例,也就是说内部类实例存在的时候,外部类实例是还不存在的,因而这里必须使用static修饰;
  • 根据标准的Builder模式的使用方式,外部类的各个参数都必须使用final修饰,然后只需要为其声明getter方法即可。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值