单例模式的限制使用
单例的优点:
-
非运用不初始化
-
延迟初始化
-
单例继承?
-
方便,全局的访问点
缺点:
-
无法控制初始化的时机
-
单例对于多线程的弊端
-
增加了耦合性,减少的代码中的纯函数
解决方案:
-
考虑Manager(运用单例模式的类)的必要性?将控制器的单例功能转接到其负责的对象身上,即让对象自己管理自己
-
限制多个实例的出现以达到一个单例的效果(C++的assert断言)注:感觉对于多个单例的管理可以使用服务定位器模式来实现到类似效果
-
唯一的全局静态里面存在其他部分的一个实例eg:Game静态类里面存在多个管理器的实例(非单例/静态)
-
依赖注入?将对象作为参数传递进去
-
基类中静态定义,以protected修饰符限制访问,从而做到一个伪全局变量的访问点