public class MyTest02
{
public static void main(String[] args)
{
/* TestA ta=new TestA(); //这是错误的,构造函数已经被私有化了*/
TestA ta1=TestA.getTestA();/* 通过getXxx方法获的TestA类的对象ta1 */
ta1.show();
TestA ta2=TestA.getTestA();/* 通过getXxx方法获的TestA类的对象 ta2*/
System.out.println(ta1==ta2);/* ==比较的是对象的地址 这里验证ta1 ta2指向同一个对象 输出: true*/
}
}
//单例模式的实现:非延迟式 开发建议的使用形式
class TestA
{
private TestA()/* 私有化构造函数 */
{
}
private static TestA tt=new TestA(); /*实例化一个私有的,静态的(必须的,因为:静态方法无法访问外边的非静态成员)对象tt*/
public static TestA getTestA()/*给外界提供一个静态的(这是必须的,因为构造函数私有化了)*/
{
return tt;
}
//功能方法
void show()
{
System.out.println("这是一个非延迟式的单例设计模式实例");
}
}
//单例模式的实现:延迟式
class TestB
{
private TestB()/* 私有化构造函数 */
{
}
private static TestB tt; /* 只是声明一个TestA类的引用tt,静态的(必须的,因为:静态方法无法访问外边的非静态成员)*/
public static TestB getTestB()/*给外界提供一个静态的(这是必须的,因为构造函数私有化了)*/
{
if(tt!=null)
{
/*如果tt不是空引用,创建对象*/
tt=new TestB();
}
return tt;
}
//功能方法
void show()
{
System.out.println("这是一个延迟式的单例设计模式实例");
}
}
|