static能大量用么?
在我看来,static不能用来大量修饰方法,因为我觉得static用多的话,占用内存多。但是有人有另外一个意见:static能提高速度,对内存无影响。
不知道大家如何看这个问题?
大部分时候,我们不用讨论static是否影响效率,而应该是这确实客观反映了系统的本来面貌否。
我曾经碰到过一个游戏系统,由于大量使用static 和singleton,导致单线程,速度太慢了。注意:对于一些初学者,单线程开发是最方便的,这也是没有架构设计原因导致的,这样的项目必然失败。
static方法本身不会影响性能,笼统的来说,由于不需要new对象,也不需要隐式传递对象引用,因此内存消耗少,执行速度快。
但是由于static方法调用本身是不访问对象的,因此方法内部不能够使用非静态的属性,如果你不管三七二十一乱用static方法,必然会造成定义大量的静态属性,这样反而会造成内存消耗大,对象之间偶合性非常高的问题。
因此是否采用static方法不取决于内存消耗和执行效率,而是取决于你的业务逻辑。笼统的来说,如果对象是有状态的,那么需要new一个对象,方法不是静态的,如果对象是无状态的,那么使用静态方法,把类的静态方法当做函数调用来使用。
如果不用static方法,频繁创建对象、频繁回收的成本如何计算?
我们的项目中现在就遇到了这样的一个问题。非同步的静态方法
也会导致单线程么?
如果你的项目用了大量的STATIC,那么你的设计思路一定有问题! 
*/
一般来说是这样子的(除非你的设计差到不行)。从面向对象的观点说,根本就不应该有static method,他的存在就是为了快速函数调用
static 会导致单线程??,不是吧??
singleton 主要是把业务逻辑分发出去,有点类似action,不应该造成单线程阿
分发业务逻辑???
请参考singleton的定义:
| 
 |