Java设计模式-单例模式

首先来明确一个问题,那就是在某些情况下,有些对象,我们只需要一个就可以了,比如,一台计算机上可以连好几个打印机,但是这个计算机上的打印程序只能有一个,
这里就可以通过单例模式来避免两个打印作业同时输出到打印机中,即在整个的打印过程中我只有一个打印程序的实例。简单说来,单例模式(也叫单件模式)的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(当然也可以不存在)。
单例模式的实例在全局中只有一个,并且该实例必须由自身创建,不能被克隆。一个标准的单例模式需要包含一下4个元素:


1.拥有一个私有的静态实例。
2.拥有私有的默认静态方法,防止使用构造函数进行实例化。


3.拥有一个静态工厂方法,并且必须是同步的。


4.重写clone()函数,并返回当前实例对象。


下面是一个单例模式例子

package com.test.demos;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

public class PropertiesFactory {

	private static PropertiesFactory _instance = null;
	private Properties properties = new Properties();
	
	private PropertiesFactory(){
		try {
			properties.load(new FileInputStream("user.properties"));
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	synchronized public static PropertiesFactory getInstance(){
		if(_instance == null){
			_instance = new PropertiesFactory();
		}
		return _instance;
	}
	public Object clone(){
		return getInstance();
	}
     public String getConfig(String key){
    	 return properties.getProperty(key);
     }
}


你可能感兴趣的:(Java开发)