单例模式示例

所谓的单例即类在创建对象时只创建一个对象。
示例1

   public static void main(String[] args) {
        Person person1 = new Person();
        Person person2 = new Person();
        System.out.println("person1:"+person1.hashCode() );
        System.out.println("person2:"+person2.hashCode() );
    }

执行结果:


image.png

如果使用示例1来创建Person 类的对象,那么将会在每次执new时,创建不同的对象。如果我们能够保证类只创建一个实例,并且提供一个访问它的全局访问点,就能够控制类实例的个数。这就是单例模式要做的事情。
实例2:把Person改为单例模式

public class Person {
    // 创建Person的一个对象
    private static Person person = new Person();
    // 构造函数私有化,不能再使用new来创建对象
    private Person(){};
    // 提供获取已创建的唯一对象的方法
    public static Person getInstance(){
        return person;
    }
}
public class Test {
    public static void main(String[] args) {
        Person person1 = Person.getInstance(); // 在这里如果使用new创建对象会报错
        Person person2 = Person.getInstance();
        System.out.println("person1:"+person1.hashCode() );
        System.out.println("person2:"+person2.hashCode() );
    }
}

运行结果


image.png

由实例2可以看出无论何时调用Person.getInstance()都只能生成一个实例。到这里单例模式的简单示例就完成了。那么程序中为何要使用单例模式呢,单例和多例的本质区别又是什么呢?现在让我们一起在工作的过程中去思考这些问题。

你可能感兴趣的:(单例模式示例)