单例设计模式
1.定义
单例设计模式指任何类的对象只有一个
1.1 如何实现单例设计模式模式
思想:一个类只能实例化一个对象 控制对象的产生数量 ,将构造你方法私有(从源头控制对象数量),使类的外部不可调用构造方法。
步骤:
1.构造方法私有化,使其他类均无法产生此类对象;
2.唯一对象产生与类内部,类内部提供一个实例化好的对象,并用private修饰 (类内部提供静态对象);
3.唯一的属性为静态属性(静态原因是为了可以取出使用),并且类中提供静态方法取得此对象 (类的外部无法产生对象因此无法调用对象方法)
2.饿汉单例模式
package JAVASE
.Singleton
;
public class SingletonDemo1 {
public static void main(String
[] args
) {
Singleton singleton1
= Singleton
.getInstance();
Singleton singleton2
= Singleton
.getInstance();
System
.out
.println(singleton1
==singleton2
);
}
}
class Singleton {
private Singleton(){}
private static Singleton singleton
= new Singleton();
public static Singleton
getInstance(){
return singleton
;
}
}
3. 懒汉单例模式
package JAVASE
.Singleton
;
public class SingletonDemo2 {
public static void main(String
[] args
) {
Singleton2 singleton1
= Singleton2
.getSingleton();
Singleton2 singleton2
= Singleton2
.getSingleton();
System
.out
.println(singleton1
==singleton2
);
}
}
class Singleton2{
private Singleton2(){};
private static Singleton2 singleton
;
public static Singleton2
getSingleton(){
if(singleton
==null
){
singleton
=new Singleton2();
}
return singleton
;
}
}
注意事项:
懒汉式:用时再new 在多线程下可能产生不止一个对象,存在线程安全问题;
饿汉式:上来就new ;