设计模式-单例模式(singleton)

设计模式-单例模式(singleton)

Singleton模式是设计模式中最为简单、最为常见、最容易实现,也是最应该熟悉和掌握的模式。且不说公司企业在招聘的时候为了考察员工对设计的了解和把握,考的最多的就是Singleton模式。


模式结构图:

Singleton模式典型的结构图为:

          

在Singleton模式的结构图中可以看到,我们通过维护一个static的成员变量来记录这
个唯一的对象实例。通过提供一个staitc的接口instance来获得这个唯一的实例。


实现:

SingletonTest:  实现3实现单例

package com.designpatten.singleton;

public class SingletonTest {

	//唯一实例
	private static SingletonTest mSingletonTest ;
	
	//单例模式的构造函数要私有化,或者用protected修饰。
	private SingletonTest(){} ;
	
	//这个方法要是静态的。
	public static SingletonTest newInstance(){
		mSingletonTest = mSingletonTest == null ? new SingletonTest(): mSingletonTest ;
		return mSingletonTest ;
	}
	
}
Test: 测试单例模式创建的对象是同一个对象。

package com.designpatten.singleton;

public class Test {
	public static void main(String[] args) {
		SingletonTest st1 = SingletonTest.newInstance() ;
		SingletonTest st2 = SingletonTest.newInstance() ;
		
		System.out.println(st1 == st2); //结果:true   表明两个对象其实是用一个对象
		
	}
}


讨论

Singleton模式在开发中经常用到,且不说我们开发过程中一些变量必须是唯一的,比如说打印机的实例等等。
Singleton模式经常和Factory(AbstractFactory)模式在一起使用,因为系统中工厂对象一般来说只要一个。





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值