范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

设计模式Spring中用到的设计模式,你知道几个?

  设计模式无处不在,因为它就来自于我们的日常生活,提炼于生活经验。
  正握在你手中的手机,不能用220V的电压直接充电,需要一个专门的电源适配器(充电器)才行。摆在你桌上的电脑也是一样的,都需要"适配"。而 适配器模式 (Adapter Pattern)正是由此总结而来。
  从一个问题出发,为什么Spring这么牛?
  Spring 发展到今天,在Java开发中的地位毋庸置疑。人人都在用Spring,80%的开发者学完Java 就得学习Spring了。那Spring为啥这么牛呢?其中肯定很大一部分原因就是因为Spring是一个把设计模式用的淋漓尽致的框架。从类名中就能体现出来。
  小伙伴们,赶紧打开你的idea,使用上面的关键词进行搜索,将会获得一个新的视角去审视我们的Spring源码了。前言就到这里,那我们就正式进入今天的主题,设计模式设计模式的由来
  现在我们谈论的设计模式,没有特别说明的话,通常上就是指的1995年GoF(Gang of Four 四人组)所编写的 Design Patterns: Elements of Reusable Object-Oriented Software 一书,该书包含了23种设计模式。 通常也被人称为GoF 23。
  在这里大炮就不介绍全部了,网上一搜一大把,而且有些模式确实用的比较少。所以只列出常用的十种,也是比较重要的十种,大家看下,如果有不会的后面也会有专门的章节讲到的。
  可能有些读者注意到上面委派模式,并不属于GoF 23。没错,设计模式并不局限于GoF提出的,毕竟他们也是基于个人经验总结出来的。如果哪天你突然脑中灵光一闪,通过自己的经验也总结出来一个模式,并且能很好地解决一些问题,那也是完全合理OK的。为什么要使用设计模式
  讲了这么多,为啥要用设计模式呢?我就是不用不行嘛?其实这两个问题,仔细思索就会发现它完完全全就是个伪命题。我们每个人都是在"不得不" 和 "不自觉"的使用设计模式。我们来看Mybatis中的一个例子:
  SqlSession是一个接口,这里定义了对数据库的一大堆基本操作。我们对数据库的操作都离不开它,这里我们不看具体实现,只分析结构。它有三个实现类:
  重点关注这个默认的DefaultSqlSession是怎么创建的。我们还是只分析结构。
  可以看到,创建的步骤是很多的,入参就有三个,还调用了好几个子方法,最终只是为了拿到DefaultSqlSession的实例,就是这句:new DefaultSqlSession(configuration, executor, autoCommit);
  试想,如果每个需要DefaultSqlSession的实例的调用者都需要写这么一大串,那得写多少重复代码?万一创建过程有改动,我们得改多少个地方?所以我们会很自然的想到把它抽到一个公共的地方,每次需要他,就去公共的地方拿就行了。即使有改动,也只需改动这个公共方法即可。平时我们的各种工具类,各种Util之类的,都是基于这个很直白,很自然的经验。
  其实针对这个openSessionFromDataSource(),就是一个非常标准的工厂模式的体现:工厂生产一个标准化的产品,大家需要这个产品都来我这里拿就行了,并不需要关注其中的细节。而上面openSessionFromDataSource()方法,正是出自DefaultSqlSessionFactory,就是专门提供DefaultSqlSession实例的工厂。稍微看它一眼:
  它重载了很多个openSession()方法,但最终都是调用openSessionFromDataSource()方法完成创建的。
  从这个例子再次出发,我们尝试猜下:它是从一开始的现场造轮子,然后到自然而然的使用设计模式,来感受下演变过程,首先是发现问题:
  然后我们很自然的想到,把这些相同的逻辑、代码,放到一个公共方法里头,openSessionFromDataSource()方法应运而生,但是这个方法总得放一个地方吧,肯定不能是在各自的Service里面,因为还是重复了嘛,所以很自然的新建一个类:
  后面经过GoF的总结和提炼,它,Factory Pattern ,工厂模式就这么出现了。其他设计模式的诞生和这个是一样的,发现具有特征的问题=>解决问题=>提炼特征经验=>形成设计模式。
  从这个过程我们可以体会到,是因为我们先去这么做了,经过提炼和总结,才有设计模式的诞生。
  综上所述,不用设计模式也是可以正常实现我们需要的功能的。但是我们就是这么自然而然地使用了,毫无违和感。从这也能得出一个结论,也应证了这篇文章的引言部分:设计模式来源于经验(生活经验、开发经验)的总结。总结
  看了上面的例子,我们可以对设计模式做一些总结:设计模式是生活中经验总结。不使用设计模式也能解决问题,但容易让项目变成"屎山",难以扩展和维护。使用设计模式能让代码变得"优雅",易于维护、易于拓展,并且节省时间(生命)。GoF的发布的设计模式一书形成了一种标准。出现了很多的关键字,比如Factory、Adapter,后人使用设计模式都会使用这些关键字来命名。Spring源码就是一个很好地例子,所以想看懂Spring源码,一定要学习设计模式。
  使用设计模式的准则:
  不是为了用而强行使用设计模式,使用的过程应该是很自然的。诶,我需要用到这个模式才能很好的解决问题,所以我要用。
  今天就到这里了,祝大家七夕快乐,没有对象的都能今晚脱单。下一篇就是单个设计模式的精讲篇了,我们下期再见~

残害万人,暗杀亲弟弟,这个统治新疆11年的军阀,结局却出人意料熟悉新疆历史,或是年龄稍大一点的本地人应该知道,在新中国成立之前,这片土地也曾陷入军阀和国民党的昏聩统治。在那个混乱不堪的年代,新疆曾先后被杨增新金树仁盛世才三位军阀统治了30多年让自驾游变成真正的享受,与别克昂科旗一起沉浸在重庆的冬天里时光飞快,又近年关,距离上一个备受关注的冬天,已经整整一年时间。2020年实鼠不易,每年至少一游的计划也因此一直搁置着,然而,想出去走走的想法一直都没有停止。于是,我与老婆商量,在这部良心剧你根本舍不得快进。他,是狸猫换太子典故里的那个太子他,也是文人才子收割机。宋朝的名人晏殊欧阳修司马光包拯苏洵苏轼苏辙曾巩王安石都是他的贤臣,宋仁宗皇帝生涯要制衡得住这么多才子的口水和墨水当真不易。电误杀里那些隐藏的细节与彩蛋,你都看懂了么?去年误杀的上映,给了国内观众不小的惊喜。充满反转的剧情,紧张刺激的叙事节奏,精彩纷呈的演员表现,让人觉得酣畅淋漓,大呼过瘾,可以说是近些年来难得一见的优秀国产犯罪电影。误杀更加值得罗志祥猎艳招数曝光!霸道式关心情话,令女生陷进爱情骗局4月29日,据台媒报道,罗志祥出道26年的猎艳招数曝光,媒体整理出小猪对前女友周扬青以及其他女艺人霸道又暖心的对话记录,摇头感叹女生都会觉得被重视吧!周扬青上周发文宣告与男友罗志祥无意间发现男朋友竟然是个海王?简直太可怕了最近有网友分享了一则关于翻看渣男手机的经历结果竟然意外发现了男朋友不为人知的另一种身份?!!过于刺激你们感受一下投稿人和渣男的聊天记录想要和渣男斗智斗勇绝不能有一丝迟疑万万没想到低童年的记忆煤油灯盏在我童年时代,家里夜晚那跳跃着红红的火焰,散发出煤油味的小小灯盏,曾陪伴着我和弟弟走过了快乐的童年时代。那时候,家里的油灯盏,都是用旧瓶子做成的。父亲的手很巧,家中的每一盏灯盏里,曹曦文清平乐疯狂加戏,网友想起了赵丽颖的倾城时光!王凯江疏影主演的电视剧清平乐日前正在热播,这部戏总共70集,如此大的体量,节奏有些慢大家早在一开始就已经有心理准备。只是,电视剧的中心本来应该围绕着宋仁宗和皇后妃嫔以及徽柔来展开,
为什么企业需要数据来做出更好的决策在生活的几乎每一个领域,我们正越来越多地产生越来越多的数据,而企业发现的最有价值的用途之一是帮助他们做出更好的决策。这种情况一直在发生,而且可能是一个人工过程例如,花时间审查求职者智能产品如何帮助企业从数据中获利智能和联网设备已经永久性地改变了我们的生活工作和娱乐方式。我们中的许多人觉得没有身边的智能手机,我们就不完整。以至于有人创造了一个术语无手机焦虑症来描述这种形式的分离焦虑,据说高达一开始买的是MacBookair,后来分了专业之后发现要用的软件需要Windows系统,该怎么办?换个专业呗。都2020年了,专业相关环境还不支持mac的,肯定没前途。或者可以反过来想想所有那些有前途的专业哪个的应用软件不支持macos反而是有些只支持mac装一个双系统就行!新秒秒测智能健康日历健康生活小助手老话儿说出门前看看黄历(万年历日历),然而随着科技进步,老黄历已经退出大众视野了,偶尔在农村还能看到纸质的万年历日历,大部人都开始看手机APP查看日历,手机看日历总觉得缺少一点什么中低端手机扎堆发布,降价能否提升销量中国商报(见习记者赵熠如)随着双11大促拉开帷幕,各手机厂商开始集中发布新机,开启降价模式抢夺市场。机海战术降价促销能否起效?在供应链紧张的背景下,双11能否拉动手机出货量回升?中跟着python编程快速上手让繁琐工作自动化教材入坑Python第一章python基础第一章节的内容相对简单,没有什么比较复杂的知识点,主要是1。对数学操作符的使用及优先级进行解释和说明。2。对三种数据类型(整型,浮点型,字符串)进行解释说明。学习电脑知识好不好?电脑用的越来越普遍,学习电脑,尤其是如何用,成了当下几乎必备的知识技能。学习电脑知识好不好?回答是肯定好。随着科技进步,现在智能手机占据了互联网的大半江山了,随处可见低头玩手机的人如果现代人没有手机或者不用手机会怎么样?别人没有手机会怎么样我不知道,反正我若是一天不用手机,我肯定会寝食难安夜不能寐。捂脸比方说,我和老婆是两地,若是每天不视频或者语音以及用微信聊几句,我老婆就会对我不大放心,而我也会Shell脚本常用命令Linux常用命令ls常用命令lsa列举出当前目录所有文件,包括隐藏文件lsr正常列举顺序反序列化输出lst按照文件修改时间排序输出lsS按照文件大小排序输出lsl列举出文件名文件1elasticSearch基本操作Elasticsearch简介Elasticsearch是一个分布式RESTful风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。作为ElasticStack的核心,它集中有人说导航系统中高德地图是最好的,你认同这种说法吗?你经常用的导航系统是哪个?本人用过凯立德高德百度手机导航地图,凯立德最早,其次是高德,现在用百度。高德百度两大导航APP,好不好用在个人需求经验喜好。评价这两大APP,不应该能笼统说地图好不好,应该从几个方