package com.kero99.ygc.singleton;
public class Singleton {
/**
* 定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
* 场景:建立目录、数据库连接需要单线程操作的场合,用于实现对系统资源的控制。
* 饿汉式单例:类加载,就进行对象实例化。
* 懒汉式单例:第一次引用类时,才进行对象实例化。
* 单例模式优缺点:只有一个实例减少内存开支,但是无法创建子类扩展困难。
* 饿汉比较懒汉:饿汉速度快,懒汉资源利用比饿汉好。
*/
//饿汉模式
// private static Singleton s=new Singleton();
// private Singleton(){ //构造方法私有确保外界无法实例化类
// }
// static Singleton getInstance(){ //通过该方法获得实例对象
// return s;
// }
//懒汉模式
private static Singleton s=null;
private Singleton(){
}
//方法同步
synchronized public static Singleton getInstance(){
if(s==null){
//如果s 为 true 时 不同步则A B 都会创建一个对象 就违反了单例模式 synchronize 同步则不会出现这种情况
s=new Singleton();
}
return s;
}
}