单例类

来源:互联网 发布:苹果手机朗读软件 编辑:程序博客网 时间:2024/06/08 11:32

单例类

在某些特殊场景下,不允许一个类自由创建对象,只允许该类创建一个对象,这个类称为单例类。

因此,该类的构造器需要用private隐藏起来,这样就需要提供一个public的static方法 (调用该方法前还不存在对象,因此调用该方法只能是类) 作为该类的访问点,用于创建对象

另外,该类还需要用一个成员变量缓存已经创建的对象,来确保对象是否已经创建和只创建了一个,该成员变量需要被上面的静态方法访问,所以用static修饰

下面来创建一个单例类

class Singleton {    // 使用一个类变量来缓存曾经创建的实例    private static Singleton instance;    // 将构造器使用private修饰,隐藏该构造器    private Singleton() {    }    // 提供一个静态方法,用于返回Singleton实例    // 该方法可以加入自定义的控制,保证只产生一个Singleton对象    public static Singleton getInstance() {        // 如果instance为null,表明还不曾创建Singleton对象        // 如果instance不为null,则表明已经创建了Singleton对象,        // 将不会重新创建新的实例        if (instance == null) {            // 创建一个Singleton对象,并将其缓存起来            instance = new Singleton();        }        return instance;    }}public class SingletonTest {    public static void main(String[] args) {        // 创建Singleton对象不能通过构造器,        // 只能通过getInstance方法来得到实例        Singleton s1 = Singleton.getInstance();        Singleton s2 = Singleton.getInstance();        System.out.println(s1 == s2); // 将输出true,因为两次产生的对象是同一个对象    }}
0 0
原创粉丝点击