zoukankan      html  css  js  c++  java
  • [设计模式]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

     

     

  • 相关阅读:
    log4net 简单使用教程(配置)
    C#WinForm 国际化的简单实现,多语言实现
    EF Power Tool 参数错误 HRESULT:0x80070057 (E_INVALIDARG)) 解决办法
    如何用委托与事件实现winfrom窗体之间值传递
    VS2010自带的Dotfuscator 5注册
    WinForm 实现主程序(exe)与其关联类库(*.dll)分开存放
    POJ_3211 Washing Clothes (01背包)
    POJ_3624 Charm Bracelet ( 01背包 )
    集训队内部测试赛(2012.01.02)
    HDU_1011 Starship Troopers && HDU_1561 The more, The Better (树型dp)
  • 原文地址:https://www.cnblogs.com/superdo/p/5008351.html
Copyright © 2011-2022 走看看