单例模式
优点
-
在编译期确保一个类只有一个实例;
-
提供一个全局访问的入口;
在例子fileSystem中,甚至可以通过继承来实现不同游戏平台的逻辑封装
缺点
-
它是一个全局变量
- 使代码晦涩、促进了耦合、对并发不友好;
-
它必须同时解决两个问题(全局访问、一个实例)
- 如果只想解决一个问题时,另一个功能就是枷锁;
-
延迟初始化剥离了控制
Class Singleton { private static Singleton m_instance = null; public Static Singleton Instance() { if(m_instance == null) { m_instance = new Singleton(); } return m_instance; } private Singleton(){} }
替换方案
- 将类限定为单一实例
- 断言
- 为实例提供便捷的方位方式
- 作为参数传递
- 在基类中获取
- 通过其他全局对象方位