安庆大理运城常德铜陵江西
投稿投诉
江西南阳
嘉兴昆明
铜陵滨州
广东西昌
常德梅州
兰州阳江
运城金华
广西萍乡
大理重庆
诸暨泉州
安庆南充
武汉辽宁

设计模式Spring中常用的设计模式

2月2日 观潮阁投稿
  设计模式是一种思想,是一种更快更好更优雅地解决问题的一种思想。这种思想在很多优秀的框架中都有落地。比如Spring框架。
  接下来,我将从我的角度出发,粗浅的想一下,Spring框架中常用的一些设计模式。
  Spring框架核心解决的问题是什么呢?个人理解是为了解决对象之间复杂的依赖关系,降低耦合。或者可以这么说,做项目我们也可以什么框架都不用,实现功能的时候,创建多个类,自己去维护类什么时候创建、使用、销毁等生命周期以及类之间的关系。自己维护的很好或者功能很简单的话,也可以不使用框架。框架本身也就是一个黑盒工具而已,开源使我们可以将其白盒化。
  既然Spring框架的核心内容假设是解决对象之间复杂的依赖关系。通俗来说便是要啥给啥。为了实现这个目的,Spring核心的IOC容器出现了,对象都放在这个容器里,需要的时候从里面取。那就涉及到几点:
  1。创建对象,保存对象,保存对象之间的关联关系
  2。获取对象1。创建对象
  涉及到如何创建,是只创建一次还是创建多次,有关联关系,先创建A还是先创建B等。单例模式、原型模式、工厂模式、策略模式可以来帮忙。
  工厂模式:
  Spring中的BeanFactory、FactoryBean
  单例模式:
  保证一个类仅有一个实例,并提供一个全局访问点。Spring下默认创建的Bean都是单例对象。
  常用的单例模式写法又有很多:最简单的就是懒汉式了,还有饿汉式、注册式、序列化方式、枚举方式等。
  原型模式:
  Java中的克隆对象。以某个对象为原型,复制出一个新的对象。两个对象内容相同,但是对象实例不同。
  用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
  这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。
  策略模式:
  一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
  在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的context对象。策略对象改变context对象的执行算法。
  定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。2。使用对象
  获取对象的时候,有策略方法,也可以通过代理进行功能增强等。策略模式、代理模式、模板方法模式、适配器模式、装饰器模式等
  代理模式:
  为其他对象提供一种代理以控制对这个对象的访问。从结构上来看和装饰器模式类似,但Proxy是控制,更像是一种对功能的限制,而装饰器是增加职责。
  Spring的AOP代理,应该是很出名的。JdkDynamicAopProxy、Cglib2AopProxy。
  模板模式:
  定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。比如JdbcTemplate
  适配器模式:
  将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
  SpringAOP模块对BeforeAdvice、AfterAdvice、ThrowsAdvice三种通知类型的支持实际上是借助适配器模式来实现的,这样的好处是使得框架允许用户向框架中加入自己想要支持的任何一种通知类型,上述三种通知类型是SpringAOP模块定义的,它们是AOP联盟定义的Advice的子类型。
  属于结构型模式,适配类与被适配类之间没有必然联系。满足hasa关系。
  装饰器模式:
  属于结构型模式。满足isa关系。
  Spring中用到的包装器模式在类名上有两种表现:一种是类名中含有Wrapper,另一种是类名中含有Decorator。基本上都是动态地给一个对象添加一些额外的职责。
  观察者模式:
  定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
  当对象间存在一对多关系时,则使用观察者模式(ObserverPattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。
  Spring中Observer模式常用的地方是Listener的实现。如ApplicationListener。
投诉 评论 转载

原来,磷酸铁锂才是小鹏P7的解药众所周知,小鹏P7已经实现交付近一年的时间,但是参考特斯拉Model3、比亚迪汉两款直接竞品,前者在销量上其实是存在可进步空间的,那么您会给它的综合表现打多少分?刚刚结束……高中生造无人自行车获奖争议续组委会称符合获奖标准近日,有关高中生造出无人自行车获丘成桐奖的报道引发了社会舆论高度关注。有网友指出,这辆被媒体称为自行车版的特斯拉,与网售的2万元左右的无人自行车一模一样。还有网友认为这个自行车……京东自营店和旗舰店的区别有哪些?京东旗舰店自营店靠谱吗?本篇文章解决的问题:何为京东自营店、京东旗舰店京东自营店和京东旗舰店的区别京东旗舰店和京东自营店哪个靠谱京东自营店和旗舰店的区别有哪些?京东旗舰店、京东自营店靠谱吗?……同价位最佳快充手机荣耀Play5动手玩5月18日荣耀正式举行了即刻来电,天生敢造的主题线上发布会,发布了一款新机荣耀Play5。该机是针对追求超级快充、轻薄手感、以及均衡使用体验的年轻用户专属推出的一款产品。……智能指纹锁电池没用多久就没电了,是锁的问题还是电池的问题?家里的智能锁使用一年多后,出现耗电的问题。明明就是换了电池,没多久又提示没电了,每次回家都要用应急插电接口临时接电才能开门。到底是智能锁的问题还是电池的问题呢?这个……Appium环境部署(六)脚本语言工具或解释器pycharm一、下载1、官网下载http:www。jetbrains。compycharm2、个人分享(留言分享)3、上网输入关键字pycharm搜索二、安装与配置……PHP读取文件内容的五种方式读取文件内容的五种方式分享下php读取文件内容的五种方法:好吧,写完后发现文件全部没有关闭。实际应用当中,请注意关闭fclose(fp);php读取文件内容:……8月13日,小米新系统迎来公测,首批支持13款机型2021雷军年度演讲上,小米一口气发布了四款产品,分别为小米MIX4、小米平板4、小米电视和四足机器人CyberDo,可以说是吊足米粉胃口。但并非所有米粉都关注硬件产品,看发布……苹果的AR智能眼镜可能距离生产开始还有几个月的时间玩懂手机网3月10日资讯,苹果公司对于增强现实硬件的产品一直非常有兴趣,多年来苹果收购了多个这方面的专利来试图推动AR,蒂姆库克也希望借助AR和iPhone相互结合让苹果的技术……设计模式Spring中常用的设计模式设计模式是一种思想,是一种更快更好更优雅地解决问题的一种思想。这种思想在很多优秀的框架中都有落地。比如Spring框架。接下来,我将从我的角度出发,粗浅的想一下,Spri……地球是如何形成的?地球早期经历了什么,才让它成为生命的摇篮?人类是地球上最有智慧的生命,现代科学认为,人类诞生于200多万年前,人类从文明开始到现在也就几千年的时间,能够在短短几千年的时间内走出地球探索宇宙,说明人类科技发展的速度还是非……笔记本电脑怎么连接无线路由器?笔记本电脑怎么连接无线路由器?笔记本电脑要连接到无线路由器,首先得保证无线路由器安装正确。如果无线路由器还没有正确安装好,请按照下面的步骤将路由器安装好。见下图所示。……
银行账户可以被冻结,为啥比特币不可以?美国再次领先,台积电也迎来坏消息,芯片行业将再迎变革?20002500元档平板电脑推荐,华为小米荣耀联想你选谁?华为欧拉系统和鸿蒙系统区别华为欧拉是什么系统HTC打了自己脸,又推出了旗舰智能手机,HTC会成为第二个小你认为实体店已经落寞了吗?你觉得手机壁纸是给别人看的还是给自己看的?石头科技距离天花板还有多远?5GSoC旗舰芯片,120Hz2。5K护眼全面屏!荣耀平板V荣耀50Pro评测荣耀独立后首个数字系列产品,满满都是荣耀味在这场展会上,我们看到了能救命的T恤,160W有线充电的手机恒大许家印突然卸任会不会引起房地产行业的动荡?corneliani是什么牌子什么档次属于奢侈品吗?室外儿童如何防止蚊虫叮咬那个因为蝴蝶结走红的奶奶,消失在阳台流量时代之殇何家弘:借助判例完善非法证据排除规则唐立淇每日星座运势2017。12。20欧冠冠军3大种子获大礼包,曼联59出局,皇马恼火被演了山药怎么保存最详细的保存方法2006年8月10日文学是一种享受姓丁的男孩名字姓丁男孩取名高分好听的名字钓鱼学做针线活儿

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找七猫云易事利