zoukankan      html  css  js  c++  java
  • 项目整理回顾1,关于单例使用

    单例模式是最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
    这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。

    注意:
    1、单例类只能有一个实例。
    2、单例类必须自己创建自己的唯一实例。
    3、单例类必须给所有其他对象提供这一实例。

    4、滥用单利模式会增加代码的耦合度。

    使用:

    1、unity 中的单例

    //私有的静态变量
    private static PlayerData playerData;
    //提供全局的访问接口
    public static PlayerData GetInstance()
    {
         return playerData;
    }
    //实例化对象
    void Awake()
    {
        if (playerData == null)
        {
            playerData = this;
        }
    }

    2、泛型单例

    public abstract class Singleton<T> where T : Singleton<T>, new()
    {
        protected static T ms_instance = default(T);
    
        public static T Instance
        {
            get
            {
                if (ms_instance == null)
                {
                    ms_instance = new T();
                    ms_instance.InitSingleton();
                }
                return ms_instance;
            }
        }
    
        protected virtual void InitSingleton()
        {
    
        }
    
        public void Initialize()
        {
            //do nothing, just initialize
        }
    
        public virtual void OnDestroy()
        {
            ms_instance = null;
        }
    }

    2.1 使用泛型单例

    public class FW_SystemSetting : AGF.Singleton<FW_SystemSetting>
    {
        protected override void InitSingleton()
        {
            //这里可以进行额外的初始化
            
        }
    }
    
    //访问
    //FW_SystemSetting.Instance.CallFunction()

    这里只记录下常规的用法,其他带锁单例,单线程安全问题等等遇到的时候在深入研究!

  • 相关阅读:
    一个票据打印实例
    页面刷新,保持页面位置
    HTML页面跳转
    DataTable帮助类
    使用cookie保存用户名状态
    DataTable实现数据统计
    Coolite Toolkit学习笔记九:表单布局控件FormLayout与FromPanel
    QQ趣事
    看到几篇关于Ajax介绍的文章,转贴过来
    积极的生活着
  • 原文地址:https://www.cnblogs.com/unityzc/p/10570969.html
Copyright © 2011-2022 走看看