好友搜狗百科说:通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 要点有三个: 一是某个类只能有一个实例; 二是它必须自行创建这个实例; 三是它必须自行向整个系统提供这个实例。 特点:对实例个数的控制并节约系统资源 实现方式有三种: 1. 饿汉式 class Singleton{
private Singleton singleton = new Singleton(); //来不及说了,先上车,哦不,先开吃 private Singleton(){}; //私有构造函数防止那些不怀好意的人自己拿; public static Singleton getInstance(){ //能给的只有这个了;
return singleton; } } 直接创建实例浪费了空间,但节约了时间 2. 懒汉式: class Singleton{
private Singleton singleton; //先睡会,一会再说 private Singleton(){}; //私有构造函数防止那些不怀好意的人自己拿; public synchronized static Singleton getInstance(){ //好好好,给你还不行;synchronized 线程同步 if(singleton == null) singleton = new Singleton(); return singleton; } } 需要时创建实例,节约了空间,但浪费了时间; 3. 第三种方式(静态常量式) class Singleton{
public static final Singleton singleton = new Singleton(); //想要直接拿,别客气;哥是那个始终如一、直来直去的美男子。 private Singleton(){}; //私有构造函数防止那些不怀好意的人自己拿; } 直接创建实例浪费了空间,但节约了时间 |