Spring设计模式分析   工厂模式和单态模式 工厂模式:可以将java对象对象的调用者从被调用者的实现逻辑中分离。调用者只关心被调用者必须满足的某种规则,这种规则我们看做是接口,不必关心实例的具体实现过程,具体实现由bean工厂。 工厂模式:根据调用数据,返回一个类的实例,此类可以使多个类的某个类。通常这些类实现接口或继承类。提供各对象之间的角色划分,降低程序的耦合。
单态模式:单例模式,默认所有的bean设置为单例模式,即对所有具有相同id的bean的请求,都返回一个共享bean实例,可以降低java创建和销毁时的系统开销,Spring自动。无需自己完成 单例模式:限制类实例的创建,采用这种模式设计的类,可以保证仅有一个实例,并提供该实例的全局访问点。共享同一个内存区。构造器私有,通过静态方法返回实例,保证实例是同一个。将实例设置成静态类属性。 Spring对单例与工厂模式的实现 工厂模式的实现:即使没有工厂类,也可以实现工厂模式

  1. <!-- 使用Spring的工厂模式 -->
  2. <bean id="color" class="com.pb.test.Color"></bean>
  3. <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>
  1. Ink color = (Ink)context.getBean("color");
  2. Ink grey  = (Ink)context.getBean("grey");
  3. System.out.println(color.getColor());
  4. 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的生命周期的管理,以及依赖关系,属性

  1. Ink color1 = (Ink)context.getBean("color");
  2. Ink color2 = (Ink)context.getBean("color");
  3. 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从程序运行角度考虑程序的结构,提取业务处理过程的切面

最新文章

  1. Windows Server 2012 支持的逻辑盘容量最大是多少?
  2. angular源码分析:angular的源代码目录结构说明
  3. 固定虚拟机的IP
  4. git参考书籍
  5. Python学习笔记六--文件和输入输出
  6. JAVA中,JSON MAP LIST的相互转换
  7. IOS obj-c、c、c++混编
  8. Linux下常用操作汇总
  9. 深度解析:Android在Mms设置页面更改短信中心号码流程
  10. Matrix (二维树状数组)
  11. 任何一款IDE的设计思路
  12. 纯JSP实现用户登录注册,记事本
  13. 深入浅出多线程——ReentrantLock (二)
  14. Android Studio自定义注释模板
  15. inux中ifreq 结构体分析和使用(转)
  16. tab页的使用方法
  17. org.apache.catalina.LifecycleException项目启动报错
  18. 29、sass
  19. Nginx打卡
  20. 关于Ctime库

热门文章

  1. 【Luogu】 P3928 SAC E#1 - 一道简单题 Sequence2
  2. 【BZOJ】1574: [Usaco2009 Jan]地震损坏Damage
  3. Creating a new dynamic form project, business modeling.
  4. HDU 2577 How to Type (字符串处理)
  5. Python脚本 - 查询磁盘的读写次数信息
  6. FastDFS介绍和配置过程
  7. 函数导出在kvm_intel.ko,kvm.ko不共享
  8. python基础===PEP网站,代码规范指南
  9. MS SQLServer 批量附加数据库
  10. mac系统中实现vitualBox中访问内网端口