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);
     }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值