[Java][单例设计模式]

单例设计模式介绍

设计模式

设计模式是什么?是设计套路,是解决问题的一种有效的流程,方法,思想。比如解决怎么吃面条的问题,你想到了用一根筷子或两根筷子来吃,小明想到了用勺子来吃,小红想用叉子来吃,最后实践知道你提出的用两根筷子吃面条比较靠谱,比较高效,能很好地解决吃面条的问题,那么下一回吃面条的时候就不用想了,直接用两根筷子来吃,这就是设计模式!Java的前辈们应对各种问题,一共提出了23种设计模式,我们今天学习其中的一种:单例设计模式。

单例设计模式

单例即为单个实例,即某一个类只能够创建一个对象实例。在实际的开发过程中,我们可能会遇到某一个类只能够有一个对象实例的要求,那么要怎么实现这一点呢?

思路

1.类外不能够new对象,因为这样的话会变得不可控,不能保证只有一个对象实例了。
2.在类内创建一个本类对象。
3.对外提供一个方法,使得类外可以通过访问函数来获取对象实例的引用。

步骤

1.可以通过禁止类外创建的对象的初始化来保证类外不可以new类对象,这点可以通过私有化类的构造函数来实现。
2.在类内通过new关键字就可以完成,引用变量应该为类类型。一般地,在类中成员变量不能够让类外程序随意访问,应该设置为private,类外程序只能通过类内提供的方法访问(这样的话方法中可以设置条件,满足一定条件才让访问类内成员变量)。
3.提供的方法需要返回该类对象实例的引用,所以方法类型为类类型。对外提供方法,但是需要创建本类对象调用方法,而本类类外无法创建本类对象,所以此方法应该为静态,可以直接被类名调用。静态方法里的变量都应该为静态变量,所以对象的引用变量也应该为静态

代码(饿汉式)

class Single
{
	private static Single s = new Single();
	private Single(){};
	public static Single getInstance()
	{
		return s;
	}
}
class SingleDemo 
{
	public static void main(String[] args) 
	{
		Single si = Single.getInstance();
	}
}

在类加载的时候就创建了对象,称之为饿汉式(上来就吃,还很形象),开发的时候用的比较多。

代码(懒汉式)

class Single
{
	private static Single s = null;
	private Single(){};
	public static Single getInstance()
	{
		if(s==null)
			s=new Single();
		return s;
	}
}
class SingleDemo 
{
	public static void main(String[] args) 
	{
		Single si = Single.getInstance();
	}
}

类加载的时候不建立对象,什么时候调用函数什么时候建立对象。面试的时候一般问这种。
注意:该代码片段并没有什么实际的用处,真正应用时应该把上述代码嵌入到需要实现单例的类中。

猜你喜欢

转载自blog.csdn.net/qq_29880477/article/details/84536915