忙了很久,没时间写博客,感觉很惭愧,对不起简书各位大佬们对卑下的厚爱。

今天决定发功,写一篇关于Spring的文章,话不多说,开搞!
话说这天,小鲁班一个人蹲着峡谷红爸爸旁边的草丛里,托着自己可爱的腮帮子思考人生。

正巧,妲己小妹妹摇着性感的红尾巴路过,看到小鲁班郁闷的模样,决定上去逗逗他。

妲己:小卤蛋,你在想啥呢,那么出神,是不是昨晚金金做的卤蛋不合胃口,在生气呢?
小卤蛋:啊…妲…妲己小姐姐…没…没有…(悄悄别过脸去掩饰自己慌张的表情)
妲己: (转动迷人的大眼睛,凑近小卤蛋)是嘛?小卤蛋,那你为啥不敢看我呀…
小卤蛋:(闻到一股浓浓的香水味,打了一个激灵,往后挪了几步)啊…是这样的…妲己姐姐,我不是报名峡谷程序员学院的Java课程了吗… 可是学到Spring这个知识点的时候有点蒙圈了…现在很受伤…
妲己:没有心,就不会受伤。
小卤蛋:??
妲己:sorry,串台词了呃…
小卤蛋:害…
妲己:正好我学完了Spring,那我来给你讲讲吧?
小卤蛋:(很兴奋,脸涨的通红)好呀,好呀,妲己姐姐…
妲己:emm…我先问你一个问题,你知道Spring中用到哪些设计模式吗?
小卤蛋:(有点心虚) 知道一点…
妲己:那你说说Spring为什么使用单例模式?
小卤蛋:(这个我看过,得意)是为了实现资源共享?某些资源创建的成本很高,比如数据源等…
妲己:嗯,是的,
Spring的单例模式核心方法通过AbstractBeanFactory实现的。来看看源码:
public Object getSingotonByBeanName(String beanName){
Object bean=getSingleton(String beanName, boolean allowEarlyReference) ;
if(bean==null){
synchronized (this.singletonObjects) {
//双重校验
Object singletonObject = this.singletonObjects.get(beanName);
if (singletonObject == null) {
singletonObject = singletonFactory.createBean();
addSingleton(beanName, singletonObject);
}
return singletonObject;
}
}
}
Spring一开始会尝试获取bean,如果没有,那就加锁,Double Check之后创建Bean,创建完之后缓存在singletonObjects里面,之后再用的时候直接取这个单例对象就可以了。
小卤蛋:噢噢…我好像懂了,我之前看过node哥哥的单例模式(面试单例小技巧),有印象的…
妲己:哈哈,卤蛋,没想到你这么好学啊!
小卤蛋:嘿嘿,我这不是看到大家都很努力,我不能拖后腿啊
妲己:不错,那你知道还有哪些其他的设计模式吗?
小卤蛋:呃…这个…好像还有…(拍脑袋思考)
妲己:好啦,我来给你普及一下吧
小卤蛋:好耶(抓住妲己的胳膊晃啊晃)
妲己:(摸了摸小卤蛋的脑袋,感觉他真可爱死了,忍不住又亲了一口)
小卤蛋:(大羞羞,但还是红着脸稳稳的坐着)
妲己:小卤蛋,我跟你说哈,Spring除了单例模式还有很多种设计模式呢,作为Java领域最优秀的框架,它有很多值得我们借鉴的地方哦
比如代理模式,可以做到既不修改基类(无侵入),又可以灵活的扩展它的功能,像我们熟知的AspectJ、CGLIB、JDK动态代理等
比如观察者模式,可以做到代码解耦,像Spring中的事件通知机制就是。
比如简单工厂方法模式,由BeanFactory的实现类来统一生产bean,实现bean创建时干预、统一管理等。
比如模板方法模式,通过模板代码来减少冗余代码,模板类提供模板方法,调用类接口提供自定义的通用方法,调用类作为参数,在执行完模板方法时,实现自己的业务逻辑。
还有责任链模式、策略模式等等…
小卤蛋:哇喔,妲己小姐姐你好厉害呀,会这么多!
妲己:哈哈,没有啦,还不是我前段时间偷偷关注了node哥哥,从他那里学到了很多Java小技巧呢!
小卤蛋:搜嘎,那我也去找node哥哥给我补补课去
妲己:好呀,咱俩一起,好久没看到node哥哥了呢,嘻嘻…
夕阳下,只剩小书包和妲己手牵手一高一矮的身影,唯美而荡漾…

网友评论