本文属于原创内容,如需转载请标明来源。
单例模式属于java设计模式的一种,最常见实现方式有以下几种 懒汉、饿汉、双重检查单例、静态内部类单例。
单例模式的特点:
1:单例类只能有一个实例
2:单例类的唯一实例化必须由自己完成
3:单例类给其他对象提供唯一实例
如何保证第一个和第三个特点呢->2个实例化的对象相等说明是同一实例化对象
1 public class SingletonTest { 2 3 public static void main(String[] args) { 4 Singleton singleton1=Singleton.getInstance(); 5 Singleton singleton2=Singleton.getInstance(); 6 /* 7 * 利用Set的特性检验2个对象是同一个实例 8 * 输出1代表这两个变量代表的同一个实例对象 9 * 10 */11 Set<Singleton> set=new HashSet<Singleton>(); 12 set.add(singleton1); 13 set.add(singleton2); 14 System.out.println("set长度"+set.size()); 15 //set长度116 } 17 }
如何理解第二个特点:单例类是的实例化必须由自己完成->私有化构造器
private Singleton() { }
1 package com.innerclass; 2 3 public class SingletonTest { 4 5 public static void main(String[] args) { 6 //我们在同包中创建一个其他类 并尝试创建Singleton实例 得的一个错误 7 //The constructor Singleton() is not visible 8 //构造方法Singleton() 是不可见的 也就是说我们无法创建Singleton的实例对象 9 Singleton singleton=new Singleton(); 10 11 } 12 }

