设计模式--单例设计模式

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

}

  

posted @ 2013-08-17 23:08  微风夜明  阅读(134)  评论(0编辑  收藏  举报