本人一直对于单例和静态成员的区别不太清晰,感觉就是用的时候差个instance,以下是根据自己做项目时的经验写的一些理解,望大神指点。
1、使用情景
单例:项目中独一无二的对象,比如玩家、音效这些设为单例。
(但是将该对象设为静态类,也可以达到同样的效果,不太清楚有什么区别)
静态成员:当一个类有多个实例对象,那么这些对象的公共属性可以设为静态。比如多个敌人的移动速度、伤害值。(这种应用情形如果用单例需要给敌人多挂载一个脚本专门存放公共属性,不太好使。静态成员再合适不过)
2、生命周期
网上大部分提倡单例反对静态的理由是认为单例的生命周期好控制,静态控制不了生命周期。但是单例的生命周期不一般也是从开始一直到程序结束吗,并没有比静态成员更省。
3、书写习惯
我觉得似乎没有什么地方非使用单例不可或是非使用静态成员不可,只是方便程度不同。在书写习惯上单例更加舒服,完全和普通类一样写就好了,静态成员则有很多限制,不能调用非静态成员等等,写起来不太舒服。
1、使用情景
单例:项目中独一无二的对象,比如玩家、音效这些设为单例。
(但是将该对象设为静态类,也可以达到同样的效果,不太清楚有什么区别)
静态成员:当一个类有多个实例对象,那么这些对象的公共属性可以设为静态。比如多个敌人的移动速度、伤害值。(这种应用情形如果用单例需要给敌人多挂载一个脚本专门存放公共属性,不太好使。静态成员再合适不过)
2、生命周期
网上大部分提倡单例反对静态的理由是认为单例的生命周期好控制,静态控制不了生命周期。但是单例的生命周期不一般也是从开始一直到程序结束吗,并没有比静态成员更省。
3、书写习惯
我觉得似乎没有什么地方非使用单例不可或是非使用静态成员不可,只是方便程度不同。在书写习惯上单例更加舒服,完全和普通类一样写就好了,静态成员则有很多限制,不能调用非静态成员等等,写起来不太舒服。