单例设计模式
1.定义
单例设计模式指任何类的对象只有一个
1.1 如何实现单例设计模式模式
思想:一个类只能实例化一个对象 控制对象的产生数量 ,将构造你方法私有(从源头控制对象数量),使类的外部不可调用构造方法。
步骤:
1.构造方法私有化,使其他类均无法产生此类对象;
2.唯一对象产生与类内部,类内部提供一个实例化好的对象,并用private修饰 (类内部提供静态对象);
3.唯一的属性为静态属性(静态原因是为了可以取出使用),并且类中提供静态方法取得此对象 (类的外部无法产生对象因此无法调用对象方法)
2.饿汉单例模式
package JAVASE.Singleton;
/**
* @Name:饿汉单例模式
* @Author:ZYJ
* @Date:2019-05-10-20:57
* @Description:
*/
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;
/**
* @Name:懒汉单例模式
* @Author:ZYJ
* @Date:2019-05-10-21:02
* @Description:
*/
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 ;