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指向同一对象 }}