一、单例模式
1.单例模式的特点
- 私有构造器
- 私有自己属性
- 对外静态实例方法
2.分类
懒汉式
用到的时候再去创建,有延迟加载的作用
线程不安全
饿汉式:
一开始就创建好,但是容易产生垃圾
线程安全
双重检测锁(DCL):
第一次检查为了不必要的锁;
第二次检查,是检查当前线程,返回实例;
volatile是保证线程的可见性、静止指令重排
3.应用
Spring bean作用域是单例的,就利用了单例模式
二、工厂模式
1.工厂可以代替new,给我们生产对象
2.Spring的ioc就利用了工厂模式,具体:ApplicationContext和BeanFactory
三、代理模式
1.通过代理类,我们可以访问到被代理类的某些方法,并且在执行该方法的前后进行一些拦截操作
2.springAOP
四、设配器模式
1.适配一些不兼容的接口,比如Springmvc中的HandlerAdper,他就是用来适配不同实现方式的controller的
2.controller的三种实现方式:Controller接口,HttpRequestHandler接口,@Controller注解
五、策略模式
比较器Comparators,线程池的四种拒绝策略
六、模板模式
1.定义模板,具体实现由子类来实现
AQS