Spring实现了两种基本的设计模式:
l 单态模式
l 工厂模式
Spring容器是实例化和管理全部bean的工厂,工厂模式可将java对像的调用者从被调用者的实现逻辑中分离出来,调用者只关心被调用者必须满足的某种规则(接口),而不必关心实例的具体实现过程.具体的实现由bean工厂完成。
Spring默认将所有的bean设置成单态模式,即对所有相同id的bean的请求,都将返回同一个共享实例。单态模式可大大降低Java对象创建和销毁时的系统开销。使用Spring将bean设成单态行为,则无须自己完成单态模式。
单态模式例子:
Public class SingletonTest
{
Private static SingletonTest instance;
Private SingletonTest()
{}
Public static SingletonTest getInstance()
{
If(instance == null)
{
Instance = new SingletonTest();
}
Return instance;
}
}
工厂模式例子:
Public insterdace Person
{
/*@param name对name打招呼
* @return 打招呼的字符串
*/
Public String sayHello(String name);
/*@param name对name告别
* @return 告别的字符串
*/
Public String sayGoodBye(String name);
}
Public class American implements Person
{
Public String sayHello(String name)
{
Return name + “,Hello”;
}
Public String sayGoodBye(String name)
{
Return name + “,Good Bye”;
}
}
Public class Chinese implements Person
{
Public String sayHello(String name)
{
Return name + “,你好”;
}
Public String sayGoodBye(String name)
{
Return name + “,再见”;
}
}
Public class PersonFactory
{
Public Person getPerson(String ethnic)
{
If(ethnic.equalsIgnoreCase(“chin”))
{
Return new Chinese();
}
Else
{
Return new American();
}
}
}
Spring对单态模式与工厂模式的实现
无须修改程序的接口和实现类,Spring提供工厂模式的实现。
Spring实现的工厂模式,不仅提供创建bean的功能,还提供对bean生命周期的管理。最重要的是,还可以管理bean与bean之间的依赖关系,以及bean的属性值。