为了防止单态模式的类被多次实例化,应将类的构造器设成私有,这样就保证了只
能通过静态方法获得类实例。而该静态方法则保证每次返回的实例都是同一个,这就需
将该类的实例设置成类属性,由于该属性需要被静态方法访问,因此该属性应设成静态
属性。
下面给出单态模式的示例代码:
//单态模式测试类
public class SingletonTest
//该类的一个普通属性。
int value
//使用静态属性类保存该类的一个实例。
private static SingletonTest instance;
//构造器私有化,避免该类被多次实例。
pr 工vate SingletonTest()
System.out.println("正在执行构造器...,,) ;
//提供静态方法来返回该类的实例。
public stat 工c SingletonTest getInstance()
//实例化类实例前,先检查该类的实例是否存在
if (instance -- null)
//如果不存在,则新建一个实例。
instance = new SingletonTest();
//返回该类的成员变量:该类的实例。
return instance;
//以下提供对普通属性value 的setter 和getter 方法
public int getValue ()
return value;
public void setValue(int values)
{
this.value = value;
}
public static void main(String[] args)
{
SingletonTest tl = SingletonTest .getInstance();
SingletonTest t2 = SingletonTest .getInstance();
t2.setValue(9);
System.out.println(tl == t2);
从程序最后的打印结果可以看出,该类的两个实例完全相同。这证明单态模式类的
全部实例是同一共享实例。程序里虽然获得了类的两个实例,但实际上只执行一次构造
本文介绍单态模式的实现原理及代码示例。通过私有化构造器并利用静态方法返回唯一实例,确保类的单一实例化。代码示例展示了如何通过静态方法获取类的同一实例。
1511

被折叠的 条评论
为什么被折叠?



