package com.sjm.design;
/*
* 单例模式:实现一个只能实例化一次的类,即单例模式
* 1.私有化构造方法
* 2.编写一个公共方法,供外部使用
* 3.在公共方法中实例化对象
*
* 懒汉模式 : 用就创建对象,不用就不创建
*/
public class Boss {
private String name;
private static Boss boss = null; //static修饰的方法中只能调用静态的类,所以要用Static修饰
//private Boss () {} 可有可无,因为单例模式下不允许外部创建类对象
//私有化,外部无法进行类的实例化
private Boss (String name) {
this.name = name;
}
//因为外部不能进行类的实例化,不能用类对象进行类的调用该方法,所以要使用static,通过类名.方法名直接进行调用
public static Boss instanceBoss() {
//不能直接写为Boss boss = new Boss("王总"); 因为每调用一次instanceBoss方法时,都会开new 一个新的地址存放boss,多次调用产生的不同一个boss,实例化了多个对象
//第一次调用时boss为空,进行实例化,第二次调用时boss已经不为空,直接返回第一次获得的boss,所以只实例化了一个对象
//只有调用该方法才会创建对象,不调用就不创建,所以为懒汉模式
if (boss == null) {
boss = new Boss("王总");
}
return boss;
}
}