单例设计模式只操作一个实例对象
之前笔者一直对单例设计模式中,是否多次调用只生成一个实例,并不是十分的确定,于是自己动手写了个demo.
- 单例
public class SingletonDemo {
/**
* 私有构造,并对外提供获取实例的方法
*/
private SingletonDemo() {}
private static class getInstance {
private static final SingletonDemo INSTANCE = new SingletonDemo();
}
public static SingletonDemo getSingletonDemo() {
return getInstance.INSTANCE;
}
/**
* 自定义的字段,及相应的get,set方法
*/
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
/**
* 重写toString方法,以验证是否操纵的同一个对象
*/
@Override
public String toString() {
return "SingletonDemo [name=" + name + ", age=" + age + "]";
}
}
2.测试类
public class Test{
public static void main(String[] args){
SingletonDemo demo1 = SingletonDemo.getSingletonDemo();
SingletonDemo demo2 = SingletonDemo.getSingletonDemo();
/**
* 打印两个实例的哈希码,以便验证是否两者为同一个实例对象
*/
System.out.pringln(demo1.hashCode() + "====" + demo2.hashCode());
demo1.setName("张三");
demo1.setAge(13);
/**
* 对demo1进行操作,再打印demo2,再次验证是否两者为同一个实例
*/
System.out.pringln(demo2);
}
}
输入结果:
经过测试发现,单例设计模式只会生成一个实例对象,通过多个引用对实例对象的操作,始终都是在操作同一个实例对象.所以,请勇敢地相信吧.