Spring主要用到两种设计模式
1、工厂模式
Spring容器就是实例化和管理全部Bean的工厂。
工厂模式可以将Java对象的调用者从被调用者的实现逻辑中分离出来。
调用者只关心被调用者必须满足的某种规则,这里的规则我们可以看做是接口,而不必关心实例的具体实现过程,具体实现由Bean工厂完成。
2、单例模式
Spring默认将所有的Bean设置为单例模式,即对所有相同的Bean请求,都将返回同一个共享Bean实例,这样就可以大大减低Java对象创建和销毁时的系统开销。
使用Spring将Bean设置为单例模式,则无需自己完成单例模式。
实例:
Ink.Java
package com.pb;/**
*
* 项目名称:PB_SpringDemo
* 类名称:Ink
* 类描述: 墨盒接口
* 创建人:Administrator
* 创建时间:2019年7月6日 下午3:05:06
* 修改人:Administrator
* 修改时间:2019年7月6日 下午3:05:06
* 修改备注:
* @version
*
*/
public interface Ink {//获取墨盒颜色的方法public String getColor();
}
ColorInk.Java
package com.pb;public class ColorInk implements Ink {@Overridepublic String getColor() {return "使用彩色墨盒打印";}
}
GreyInk.Java
package com.pb;public class GreyInk implements Ink {@Overridepublic String getColor(){return "采用黑色墨盒打印";}
}
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN"
"http://www.springframework.org/dtd/spring-beans-2.0.dtd">
<beans><bean id="color" class="com.pb.ColorInk"/><bean id="grey" class="com.pb.GreyInk"/>
</beans>
Test.Java
//使用Spring的方式//创建Spring上下文ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");//测试Spring工厂模式Ink k1=null;k1=(Ink)context.getBean("color");System.out.println(k1.getColor());Ink k2=(Ink)context.getBean("grey");System.out.println(k2.getColor());Ink k11=(Ink)context.getBean("color");//验证是否是单例模式System.out.println(k1==k11);//输出 True,表示这个生成的是单例模式,同一个实例对象
运行效果