更多的时候,为了提高性能,程序应尽量减少Java 对象的创建和销毁时的开销。使用单态模式可避免Java 类被多次实例化,让相同类的全部实例共享同一内存区。为了防止单态模式的类被多次实例化,应将类的构造器设成私有,这样就保证了只能通过静态方法获得类实例。而该静态方法则保证每次返回的实例都是同一个,这就需将该类的实例设置成类属性,由于该属性需要被静态方法访问,因此该属性应设成静态属性。
下面给出单态模式的示例代码:
// 单态模式测试类
public class SingletonTest {
// 该类的一个普通属性。
int value;
// 使用静态属性类保存该类的一个实例。
private static SingletonTest instance;
// 构造器私有化,避免该类被多次实例。
private SingletonTest() {
System.out.println("正在执行构造器...,,");
}
// 提供静态方法来返回该类的实例。
public static 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);
}
}
返回结果:
正在执行构造器...,,
true