tip:以下是正文部分
一、单例设计模式
谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,
对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法
二、懒汉式
( 1 ) 构造器私有化。
( 2 ) 定义一个static静态属性对象。
( 3 ) 提供一个public的static方法,可以返回一个对象。
( 4 ) 只有用户使用getlnstance时,才返回对象,再次调用时,会返回上次创建的对象。
public class main {
public static void main(String[] args) {
a1 a = a1.getInstance();
}
}
class a1{
static int num1 = 100;
private a1() {
System.out.println("构造器被调用");
}
private static a1 a11;
public static a1 getInstance(){
if (a11 == null) {
a11 = new a1();
System.out.println("getinstance被调用");
}
return a11;
}
}
三、饿汉式
( 1 ) 构造器私有化。
( 2 ) 类的内部创建对象。
( 3 ) 向外暴露一个静态的公共方法。getlnstance代码实现。
public class main {
public static void main(String[] args) {
a1 a = a1.getInstance();
}
}
class a1{
private a1() {
System.out.println("构造器被调用");
}
static a1 a11 = new a1();
public static a1 getInstance(){
System.out.println("getinstance被调用");
return a11;
}
}
四、存在问题
1.二者最主要的区别在于创建对象的时机不同:
饿汉式:是在类加载就创建了对象实例。
懒汉式:是在使用时才创建。
2.饿汉式不存在线程问题,但是会浪费资源。
懒汉式存在线程安全问题。
3.懒汉式存在线程问题,但是不会浪费资源。