spring用到哪些设计模式
单例模式
public class
SingletonDemo {
private static
SingletonDemo
demo
=
null
;
private
SingletonDemo() {
}
public static
SingletonDemo getDemo() {
if
(
demo
==
null
) {
demo
=
new
SingletonDemo();
}
return
demo
;
}
}
class
testDemo {
public static void
main(String[] args) {
SingletonDemo singletonDemo2 = SingletonDemo.
getDemo
();
SingletonDemo singletonDemo1 = SingletonDemo.
getDemo
();
}
}
工厂模式
/**
*
总体来说,凡是出现了大量的产品需要创建,并且具有共同的接口时,可以通过工厂方法模式进行创建。
*
在以上的三种模式中,第一种如果传入的字符串有误,不能正确创建对象,
*
第三种相对于第二种,不需要实例化工厂类,所以,大多数情况下,我们会选用第三种
——
静态工厂方法模式。
*/
public interface
SaySometing {
public void
say();
}
class
Man
implements
SaySometing {
@Override
public void
say() {
System.
out
.println(
"i am a man"
);
}
}
class
Woman
implements
SaySometing {
@Override
public void
say() {
System.
out
.println(
"i am a woman"
);
}
}
class
Factory {
public
SaySometing speak(String person) {
if
(
"man"
.equals(person)) {
return new
Man();
}
else
{
return new
Woman();
}
}
}
class
MoreFactory {
public
SaySometing ManSay() {
return new
Man();
}
public
SaySometing WomanSay() {
return new
Woman();
}
}
class
MoreStaticFactory {
public static
SaySometing ManSay() {
return new
Man();
}
public static
SaySometing WomanSay() {
return new
Woman();
}
}
class
RunTestDemo {
public static void
main(String[] args) {
//
单个工厂方法模式
Factory factory =
new
Factory();
SaySometing saySometing = factory.speak(
"woman"
);
saySometing.say();
//
多个工厂方法模式
MoreFactory moreFactory =
new
MoreFactory();
SaySometing saySometing1 = moreFactory.ManSay();
saySometing1.say();
//
多个静态工厂方法模式
SaySometing saySometing2 = MoreStaticFactory.
WomanSay
();
saySometing2.say();
}
}