Spring中的设计模式2
Spring设计模式分析 工厂模式和单态模式 工厂模式:可以将java对象对象的调用者从被调用者的实现逻辑中分离。调用者只关心被调用者必须满足的某种规则,这种规则我们看做是接口,不必关心实例的具体实现过程,具体实现由bean工厂。 工厂模式:根据调用数据,返回一个类的实例,此类可以使多个类的某个类。通常这些类实现接口或继承类。提供各对象之间的角色划分,降低程序的耦合。
单态模式:单例模式,默认所有的bean设置为单例模式,即对所有具有相同id的bean的请求,都返回一个共享bean实例,可以降低java创建和销毁时的系统开销,Spring自动。无需自己完成 单例模式:限制类实例的创建,采用这种模式设计的类,可以保证仅有一个实例,并提供该实例的全局访问点。共享同一个内存区。构造器私有,通过静态方法返回实例,保证实例是同一个。将实例设置成静态类属性。 Spring对单例与工厂模式的实现 工厂模式的实现:即使没有工厂类,也可以实现工厂模式
- <!-- 使用Spring的工厂模式 -->
- <bean id="color" class="com.pb.test.Color"></bean>
- <bean id="grey" class="com.pb.test.Grey"></bean>
<!-- 使用Spring的工厂模式 -->
<bean id="color" class="com.pb.test.Color"></bean>
<bean id="grey" class="com.pb.test.Grey"></bean>
- Ink color = (Ink)context.getBean("color");
- Ink grey = (Ink)context.getBean("grey");
- System.out.println(color.getColor());
- System.out.println(grey.getColor());
Ink color = (Ink)context.getBean("color");
Ink grey = (Ink)context.getBean("grey");
System.out.println(color.getColor());
System.out.println(grey.getColor());
对单例模式的实现 两个对象引用地址相同。 1.主体代码外无须出现Spring特定接口 2.调用代码面向Ink接口,无须了解实现类的名称 3.工厂无须多个实例,因此工厂使用单例,Spring上下文,实现了单例。Spring工厂模式,不进提供了创建bean的功能,还提供对bean的生命周期的管理,以及依赖关系,属性
- Ink color1 = (Ink)context.getBean("color");
- Ink color2 = (Ink)context.getBean("color");
- System.out.println(color1==color2);
Ink color1 = (Ink)context.getBean("color");
Ink color2 = (Ink)context.getBean("color");
System.out.println(color1==color2);
Spring的核心机制 依赖注入和控制反转
当某个角色需要另一个角色的协助,在传统的程序设计过程中,通常由调用者来创建被调用者的过程,但在Spring中,创建被调用者的工作不再由调用者来完成,因此被称为控制反转, 创建被调用者实例的工作通常由Spring容器来完成,然后注入调用者,因此也成为依赖注入
依赖:两个元素中一个定义发生改变则引起另一个元素发生变化, 则两个元素之间存在依赖关系
系统复杂是因为系统的各部分的关联程度太高,各模块之间的依赖程度太高。
Spring里,创建被调用者实例的工作由Spring容器来做,然后Spring 容器把被调用者实例注入到调用者中,
依赖注入让bean与bean之间以配置文件的形式组织到一起,而不是以代码的形式耦合到一起
可以随意更换接口的实现
Spring的核心概念 面向方面编程 AOP
不会取代面向对象编程,也就是OOP,面向方面编程是面向对象编程的补充。AOP从动态的角度考虑程序结构,从而使OOP更加完善,面向对象编程将程序分解成各个层次的对象,而面向方面的编程将程序运行过程分解成各个各个切面
AOP模块是Spring 的一个关键组件。是Spring IOC依赖注入的完善和补充,使之成为更加有效的中间件。
但是IOC不依赖于AOP,可认为AOP不是必须的
AOP的目标是提供与Spring IOC容器紧密结合的AOP框架,不致力于 提供与完善的AOP实现,而是以实现为主,提供AOP与IOC的完美集合,AOP从程序运行角度考虑程序的结构,提取业务处理过程的切面
Spring中的设计模式2的更多相关文章
- Spring中的设计模式
[Spring中的设计模式] http://www.uml.org.cn/j2ee/201301074.asp [详解设计模式在Spring中的应用] [http://www.geek521.c ...
- JDK和Spring中的设计模式
创建型 1)工厂方法 Collection.iterator() 由具体的聚集类来确定使用哪一个Iterator 2)单例模式 Runtime.getRuntime() 3)建造者模式 StringB ...
- Spring中的设计模式学习
Spring提供了一种Template的设计哲学,包含了很多优秀的软件工程思想. 1. 简单工厂 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一. ...
- spring 中的设计模式
https://mp.weixin.qq.com/s?__biz=MzU0MDEwMjgwNA==&mid=2247485205&idx=1&sn=63455d2313776d ...
- Spring中的设计模式:模板模式
导读 模板模式在是Spring底层被广泛的应用,比如事务管理器的实现,JDBC模板的实现. 文章首发于作者的微信公众号[码猿技术专栏] 今天就来谈谈「什么是模板模式」.「模板模式的优缺点」.「模板模式 ...
- Spring中的设计模式:工厂方法模式
导读 工厂方法模式是所有设计模式中比较常用的一种模式,但是真正能搞懂用好的少之又少,Spring底层大量的使用该设计模式来进行封装,以致开发者阅读源代码的时候晕头转向. 文章首发于微信公众号[码猿技术 ...
- Spring中的设计模式--观察者模式
spring在容器中使用了观察者模式: 一.spring事件:ApplicationEvent,该抽象类继承了EventObject类,jdk建议所有的事件都应该继承自EventObject. 二.s ...
- Spring中的用到的设计模式
应该说设计模式是我们在写代码时候的一种被承认的较好的模式.好的设计模式就像是给代码造了一个很好的骨架,在这个骨架里,你可以知道心在哪里,肺在哪里,因为大多数人都认识这样的骨架,就有了很好的传播性.这是 ...
- Spring中使用的设计模式
目录 Spring使用的设计模式 1.单例模式 2.原型模式 3.模板模式 4.观察者模式 5.工厂模式 简单工厂模式 工厂方法模式 6.适配器模式 7.装饰者模式 8.代理模式 9.策略模式 S ...
随机推荐
- 【点分治练习题·不虚就是要AK】点分治
不虚就是要AK(czyak.c/.cpp/.pas) 2s 128M by zhb czy很火.因为又有人说他虚了.为了证明他不虚,他决定要在这次比赛AK. 现在他正在和别人玩一个游戏:在一棵树上 ...
- bzoj 2079: [Poi2010]Guilds——结论题
Description Zy皇帝面临一个严峻的问题,两个互相抵触的贸易团体,YYD工会和FSR工会,他们在同一时间请求在王国各个城市开办自己的办事处.这里有n个城市,其中有一些以双向马路相连,这两个工 ...
- 【Atcoder】ARC084 Small Multiple
[题意]求一个k的倍数使其数位和最小,输出数位和,k<=10^5. [算法]最短路 [题解]考虑极端情况数字是可能爆long long的(例如k*num=100...000),所以确定基本方向是 ...
- Android检测View的可见性
Android中我们经常会用到判断View的可见行,当然有人会说View.VISIBLE就可以了,但是有时候这个真是满足不了,有时候我们为了优化,在View滚到得不可见的时候或者由于滚到只显示了部分内 ...
- 并查集入门--畅通工程(HDU1232)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1232 畅通工程 Time Limit: 4000/2000 MS (Java/Others) M ...
- 小程序var that=this
小程序的js函数中,一般第一句就是var that=this,那么此语句的必要性是什么呢?下面用一段代码来解释这个问题 Page({ //页面的初始数据 loadUsers: function () ...
- Laravel 调试器 Debugbar 和数据库导出利器 DbExporter 扩展安装及注意事项
一.Debugbar安装 参考:Laravel 调试利器 —— Laravel Debugbar 扩展包安装及使用教程 的“2.安装”部分 二.DbExporter安装 参考:Laravel 扩展推荐 ...
- 算法题之Median of Two Sorted Arrays
这道题是LeetCode上的题目,难度级别为5,刚开始做没有找到好的思路,以为是自己智商比较低,后来发现确实也比较低... 题目: There are two sorted arrays nums1 ...
- 【hihocoder】sam-3
把Parent Tree拓扑排序下,然后从下往上合并. 具体的看官方题解啦~ #include<bits/stdc++.h> #define N 1000010 using namespa ...
- 【java报错】Unknown character set index for field '224' received from server.
在捣腾免费数据库时,使用的一个数据库提供商的服务器使用utf8mb4编码,而我的jar包还是八百年前的.然后...然后就报错了... (1) MYSQL 5.5 之前, UTF8 编码只支持1-3个字 ...