设计模式:对问题行之有效的解决方法,其实它是一种思想,适用于任何编程语言。
单例设计模式:保证一个类在内存中的对象的唯一性,就是只能创建一个该类的对象。
如何保证对象的唯一性呢?
(1)不允许其他程序用new方法创建该类的对象;
(2)在该类中创建一个本类实例;
(3)对外提供一个公有方法,让其他程序可以获得该实例。
步骤:
(1)私有化该类的构造函数;
(2)通过new在本类中创建一个本类的对象;
(3)定义一个公有的方法,返回本类的对象。
<pre name="code" class="java">/*
单例模式类Single,实现功能:
(1)不允许其他程序用new方法创建该类的对象;
(2)在该类中创建一个本类实例;
(3)对外提供一个公有方法,让其他程序可以获得该实例。
步骤:
(1)私有化该类的构造函数;
(2)通过new在本类中创建一个本类的对象;
(3)定义一个公有的方法,返回本类的对象。
*/
/*
单例设计模式方法一
*/
class Single
{
/*
构造函数加上private权限,就不能再用new方法创建对象。
*/
private Single(){}
private int num;
/*
本类中创建的本类对象,设置为私有(不允许其他类访问),设置为静态(静态函数getInstance()要访问)
*/
private static Single s = new Single();
/**
返回本类中的对象,设置成静态的可以通过类名来调用。
@return s:本类中创建的对象
*/
public static Single getInstance()
{
return s;
}
public void setNum(int num)
{
this.num = num;
}
public int getNum()
{
return num;
}
}
/*
单例设计模式方法二
*/
class Single1
{
private static Single1 s = null;
public static Single1 getInstance()
{
if(s==null)
s = new Single1();
return s;
}
}
/*
单例模式演示
*/
class SingleDemo
{
public static void main(String[] args)
{
Single s1 = Single.getInstance();
Single s2 = Single.getInstance();
System.out.println(s1==s2);
s1.setNum(10);
s2.setNum(20);
System.out.println(s1.getNum());
System.out.println(s2.getNum());
}
}
运行结果如图所示: