单例设计模式
保证类在内存中只有一个对象。
实现思想:
(1)控制类的创建,不让其他类来创建本类的对象。private
(2)在本类中定义一个本类的对象。Singleton s;
(3)提供公共的访问方式。 public static Singleton getMethod(){return s}
两种实现方式:
1.饿汉式(开发):
2.懒汉式(面试):单例的延迟加载模式。
3.区别:
(1)饿汉式:省时间,费内存;懒汉式:费时间,省内存;
(2)在多线程访问时,饿汉式不会创建多个对象,而懒汉式可能会创建多个对象。
package com.fenqing.Thread;
public class d01_singleton {
public static void main(String[] args) {
singleton1 s1=singleton1.getMethod1(); //4.创建对象访问
singleton1 s2=singleton1.getMethod1();
singleton2 s3=singleton2.getMethod2(); //4
singleton2 s4=singleton2.getMethod2();
System.out.println(s1==s2); //5.判断其是否为同一地址,返回true或false
System.out.println(s3==s4); //5
}
}
class singleton1{ // 饿汉式
private singleton1(){
//1.创建私有构造方法
}
private static singleton1 s=new singleton1(); //2.创建私有、静态的本类对象,或是public static final singleton1 s=new singleton1();
public static singleton1 getMethod1(){
return s; //3.创建公有、静态的,访问对象的方法,以便其他类访问
}
}
class singleton2{ // 懒汉式
private singleton2(){
//1.创建私有构造
}
private static singleton2 s; //2.创建本类对象
public static singleton2 getMethod2(){
if(s==null){ //3.创建访问方法,并判断是否为空
s=new singleton2();
}
return s;
}
}