package com.own.Single;
/**
* 单例模式:解决一个类在内存中只存在一个对象。
*
* 建议使用饿汉式
*
* 要保证对象唯一。
* 1、为了避免其它程序过多建立该类对象。先禁止其它程序建立该类对象。
* 2、还为了让其它程序访问到该类对象,只好在本类中,自定义一个对象。
* 3、为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
*
* 这三步怎么用代买体现呢?
* 1、将构造函数私有化。
* 2、在类中创建一个本类对象。
* 3、提供一个方法获取到该对象。
* */
/*饿汉式--类一创建就创建对象(安全)*/
class Single {
private int num;
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
//构造函数私有化,为了不让其它程序创建该类对象
private Single(){};
//静态方法只能调用静态变量
private static Single s = new Single();
//类名调用,方法要求静态
public static Single getSingle(){
return s;
}
}
/*懒汉式--延时加载*/
class Single2{
private static Single2 s = null;
private Single2(){}
public static Single2 getSingle2(){
if(s==null){
synchronized(Single.class){
if(s==null)
s = new Single2();
}
}
return s;
}
}
public class SingleDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
Single s1 = Single.getSingle();
Single s2 = Single.getSingle();
s1.setNum(30);
System.out.println(s2.getNum());//打印30
//s1、s2指向同一对象
}
}