如果没有成员变量,或者成员变量都是常量,则用静态类。

如果有成员变量,则用单例。(以便让成员变量有初始化机会)。

//静态类

public class CmyFuncs{

  public float m_pi=3.1415926;

  static float calculateCircleArea(float r){

    return r*r*m_pi;

  }

  ...

}

//单例

public class CmyUtil {
    static private CmyUtil m_instance=null;
   public CmyObj m_myObj;
    static public CmyUtil sharedInstance(){
        if (m_instance == null) {
            m_instance=new CmyUtil();
            m_instance.init();
        }
        return m_instance;
    }
    void init(){
    m_myObj.init();
    }

   ...
}

unity, 什么时候用静态类,什么时候用单例的更多相关文章

  1. Unity 游戏框架搭建 (十三) 无需继承的单例的模板

    之前的文章中介绍的Unity 游戏框架搭建 (二) 单例的模板和Unity 游戏框架搭建 (三) MonoBehaviour单例的模板有一些问题. 存在的问题: 只要继承了单例的模板就无法再继承其他的 ...

  2. Unity 游戏框架搭建 (二) 单例的模板

      上一篇文章中说到的manager of managers,其中每个manager都是单例的实现,当然也可以使用静态类实现,但是相比于静态类的实现,单例的实现更为通用,可以适用大多数情况. 如何设计 ...

  3. Unity 游戏框架搭建 2018 (二) 单例的模板与最佳实践

    Unity 游戏框架搭建 2018 (二) 单例的模板与最佳实践 背景 很多开发者或者有经验的老手都会建议尽量不要用单例模式,这是有原因的. 单例模式是设计模式中最简单的也是大家通常最先接触的一种设计 ...

  4. Unity 单例写法

    借鉴自:http://www.cnblogs.com/CodeCabin/p/unity_global_manager.html 实现复杂一些的全局控制,如切换游戏关卡等操作,更常用的方式是使用单例类 ...

  5. unity脚本的运行顺序以及单例的实现

    unity引擎把所有脚本先行编译后,在运行的时候一批,一批的函数进行执行. unity脚本自带函数执行顺序如下:将下面脚本挂在任意物体运行即可得到 Awake ->OnEable-> St ...

  6. Unity 游戏框架搭建 (三) MonoBehaviour单例的模板

      上一篇文章讲述了如何设计C#单例的模板.也随之抛出了问题: 如何设计接收MonoBehaviour生命周期的单例的模板? 如何设计? 先分析下需求:   1.约束脚本实例对象的个数.   2.约束 ...

  7. Unity Singleton 单例类(Unity3D开发之二十)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/47335197 ...

  8. C#单例和Unity单例

    单例是一种设计模式 单例:不管在项目中的任何模块,当需要使用某个对象的时候,获取到的始终是同一个对象 在C#中 public class InstanceDemo{ private static In ...

  9. 编写高质量代码改善C#程序的157个建议——建议107:区分静态类和单例

    建议107:区分静态类和单例 有一种观点认为:静态类可以作为单件模式的一种实现方式.事实上,这是不妥当的.按照传统的观点来看,单例是一个实例对象.而静态类并不满足这一点.静态类也直接违反面向对象三大特 ...

随机推荐

  1. GitHub 给已存在的仓库增加开原协议LICENSE

    如果你创建仓库时没有设置开原协议LICENSE,后续可以按下面方法增加开原协议LICENSE. 1.点击Create new file,如下图 2.文件名填LICENSE.md,右边就会出现choos ...

  2. 判断UISrollview的滑动方向

    很常用的一个功能,就记录下来了. -(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { historyY = scrollVi ...

  3. Oracle数据库中的所有用户名

    select * from dba_users; 查看数据库里面所有用户,前提是你是有dba权限的帐号,如sys,systemselect * from all_users;  查看你能管理的所有用户 ...

  4. Laravel技⃣术⃣特⃣点⃣

    1.Bundle是Laravel的扩展包组织形式或称呼.Laravel的扩展包仓库已经相当成熟了,可以很容易的帮你把扩展包(bundle)安装到你的应用中.你可以选择下载一个扩展包(bundle)然后 ...

  5. HTML5中表单验证的8种方法

    HTML5中表单验证的8种方法 2012-4-21 11:00| 发布者: benben| 查看: 2765| 评论: 0 摘要: 前一篇,我们介绍了HTML5中新的表单特性和函数, 今天就继续来谈谈 ...

  6. WINXP上安装及使用SqlMap之方法

    1.首先下载SqlMap 点击下载.2.其次下载用于Windows系统的Python ……点击这里…… 3.然后安装Python:Python默认安装的路径是“C:\Python”(你也可以修改安装路 ...

  7. hdu4587 TWO NODES

    问一个无向图中去掉任意两点后剩下的连通分量的个数最大值 枚举第一个删去的点,在剩下的子图中求割点 注意,剩下的子图可能不连通,那么就要对每个连通块求割点 计算删去一个点后剩余连通分量个数 left 的 ...

  8. 纯 PHP 代码最好在文件末尾删除 PHP 结束标记

    如果文件内容是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记.这可以避免在 PHP 结束标记之后万一意外加入了空格或者换行符,会导致 PHP 开始输出这些空白,而脚本中此时并无输出的意图. & ...

  9. Appium九宫格滑动解锁

    1.适配各种机型,首先获取整个解锁元素的坐标 2.代码实现 WebElement lockPattern = driver.findElement(By.id("com.android.se ...

  10. angular 的进一步深入理解

    早上同事问我个问题,angular 的表单验证有没有啥第三方库可以用? 这个问题,我想了下,之前我做的表单验证好像也没用到第三方的库来验证,直接用angular 内置的 directive 就可以搞定 ...