[设计模式]01.单例模式

单例模式

前言

单例模式是非常实用的设计模式。单例类只会被创建一次,而后就会一直被贮存在内存中,许多具有管家性质的功能模块,都要尽量使用单例模式的思想去设计。

特点

  1. 有且仅有一个实例。单例类只会被创建一次,而后就会一直被贮存在内存中
  2. 具备管家性质。
  3. 单例类的成员变量的信息,会一直保存。

写法

  1. 构造方法必须私有。
  2. 提供唯一一个获取该类实例的入口方法。业内规范方法命名为:getInstance()。
  3. 自己创建自己。

用例

  1. 刚刚结束的广告模块的开发,就用到了单例模式。有一个ADSystem类,负责对广告信息获取,请求,分发,存储等的所有操作。
  2. 游戏的声音管理,也有用到单例类,有一个声音管理者,负责对所有游戏声音的管理,播放,暂停,加载,释放。
  3. cocos2d-x里非常著名的Director,就是一个单例类。

代码写法

单例类有多种写法,现在贴一种最好用的最安全的写法。

public class Singleton {

    // ---------------
    // 成员变量
    // ---------------
    private int filed1;
    private int filed2;
    private int filed3;



    // ---------------
    // 构造方法
    // ---------------
    private Singleton() {}

    private static class SingletonHolder {

        private static final Singleton INSTANCE = new Singleton();
    }

    public synchronized static Singleton getInstance() {

        return SingletonHolder.INSTANCE;
    }

    /**
    * 方法一
    */
    public void method1(){}

    /**
    * 方法二
    */
    public void method2(){}

    /**
    * 方法三
    */
    public void method3(){}
}

如果要设计单例类,按照上面的模板去设计就好了。
调用代码:

    // 执行方法一
    Singleton.getInstance().method1();
    // 执行方法二
    Singleton.getInstance().method2();
    // 执行方法三
    Singleton.getInstance().method3();

 

本站文章为 宝宝巴士 SD.Team 原创,转载务必在明显处注明:(作者官方网站: 宝宝巴士 
转载自【宝宝巴士SuperDo团队】 原文链接: http://www.cnblogs.com/superdo/p/5008351.html

 

 

原文地址:https://www.cnblogs.com/superdo/p/5008351.html