Java语言实现的单例设计模式复习

1 单例设计模式概述

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。它是对问题行之有效的解决方式和思想。
单例(单个实例)设计模式可以保证一个类在内存中的对象唯一性。比如对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性。为了保证对象的唯一性,一是不允许其他程序用new创建该类对象;二是在该类创建一个本类实例对象;三是 对外提供一个方法让其他程序可以获取该对象。步骤:私有化该类的构造函数;通过new在本类中创建一个本类对象;定义一个公有的方法,将创建的对象返回。

2 “饿汉式”单例设计模式程序示例

package captain;

public class SingleDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SingleTest st1 = SingleTest.getInstance();
		SingleTest st2 = SingleTest.getInstance();
		st1.setNum(10);
		st2.setNum(20);
		System.out.println(st1.getNum());
		System.out.println(st2.getNum());
	}

}

class SingleTest{
	
	private int num;
	
	//“饿汉式”(类一旦加载对象就被创建)单例设计模式的三步
	private static SingleTest st = new SingleTest();//在该类中创建一个本类的私有化静态的对象
	private SingleTest(){}//私有化该类的构造函数
	public static SingleTest getInstance(){//对外提供一个公有化静态的方法返回一个该类的对象。
		return st;
	}
	
	public void setNum(int num){
		this.num = num;
	}
	public int getNum(){
		return num;
	}
}

3 “懒汉式”单例设计模式程序示例

package captain;

public class SingleDemo {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		SingleTest st1 = SingleTest.getInstance();
		SingleTest st2 = SingleTest.getInstance();
		st1.setNum(10);
		st2.setNum(20);
		System.out.println(st1.getNum());
		System.out.println(st2.getNum());
	}

}

class SingleTest{
	
	private int num;
	
	//“懒汉式”(调用getInstance方法时才创建对象)单例设计模式的三步,这种单例设计模式在多线程中存在线程安全问题。
	private static SingleTest st = null;//在该类中声明一个本类的私有化静态的对象的空引用。
	private SingleTest(){}//私有化该类的构造函数
	public static SingleTest getInstance(){//对外提供一个公有化静态的方法返回一个该类的对象。
		if(st == null)
			st = new SingleTest();
		return st;
	}
	
	public void setNum(int num){
		this.num = num;
	}
	public int getNum(){
		return num;
	}
}                                                                                                                                                         

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值