从身份证号码里提取生日和周岁的方法
548
2022-05-29
单例模式
1 、介绍:
单例模式(Singleton)也叫单态模式,是设计模式中最为简单的一种模式,甚至有些模式大师都不称其为模式,称其为一种实现技巧,因为设计模式讲究对象之间的关系的抽象,而单例模式只有自己一个对象,也因此有些设计大师并把把其称为设计模式之一。
2 、应用场景:
3、七种实现方法:
1、
package Singleton;
public class SingletonOne {
private SingletonOne(){}
private static class LazyHolder{
private static final SingletonOne INSATNCE=new SingletonOne();
}
public static SingletonOne getInstance(){
return LazyHolder.INSATNCE;
}
}
2、
package Singleton;
public class SingletonTwo {
private SingletonTwo(){};
private static final SingletonTwo INSTANCE=new SingletonTwo();
public static SingletonTwo getInstance(){
return INSTANCE;
}
}
3、
package Singleton;
public class SingletonThree {
private static final SingletonThree instance ;
static{
try{
instance=new SingletonThree();
}catch(Exception e){
throw new RuntimeException("an error occurred!");
}
}
public static SingletonThree getInsance(){
return instance;
}
private SingletonThree(){}
}
4、
package Singleton;
public enum SingletonFour {
INSTANCE;
public void execute(String arg){
}
}
5、
package Singleton;
public class SingletonFive {
private static Volatile SingletonFive instance;
private SingletonFive(){}
public static SingletonFive getInstance(){
if(instance==null){
synchronized (SingletonFive.class) {
if(instance==null){
instance=new SingletonFive();
}
}
}
return instance;
}
}
6、
使用apache commons lang: LazyInitializer
public class SingletonSix extends LazyInitializer
@Override
protected ComplexObject initialize() {
return new ComplexObject();
}
}
// Create an instance of the lazy initializer
SingletonSix initializer = new SingletonSix();
...
// When the object is actually needed:
ComplexObject cobj = initializer.get();
7、
使用guava:
private static final Supplier
@Override
public String get() {
//do some init
String result = xxx;
return result;
}
});
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。