最近突然觉得自己对于static的概念有点模糊了所以就从网上搜集些资料又自己做了一些demo试验了一下下边将一些写的比较好的文章分享一下static关键字大家肯定是用的很多了说起来大家也都知道这有什么好谈的?
可是回想起以前的一些事情不免叫我心中……
事情起因一个项目中的一些类中全部都是方法但是被设计成了非静态类了于是我为了说服同事将这些类设计成静态的下了好大的力度等同事明白过来以后我已疲惫不堪
不知道您是否存在以下观点?
static是从面向过程到面向对象的遗留产物以往开发都是面向过程的所以很多使用了静态类静态方法到了面向对象以后这个关键字被保留下来了因此面向对象开发中最好不用或少用static关键字
无论是静态类还是非静态类效果都是一样的没什么区别
如果你非要让我使用静态类那么这样做的意义在哪里?
如果我把非静态类该为静态类那么会不会有什么问题?
下面针对以上的一些观点笔者阐述下自己的理解如果哪里有写的不对的地方还请指出
static关键字的确是面向过程开发的时代就有的关键字但是并不代表是面向对象开发中就应该尽量避免static关键字
静态类跟非静态类效果肯定是不一样的区别肯定是有的
根据笔者的经验static类一般用于与状态无关的类那么什么是与状态无关的类?我的理解是当一个类中没有属性只有方法的的时候就可以认为这个类是与状态无关的类回想非静态类实例化一个对象目的在什么地方?目的就是通过这个实例化的对象来保存类的状态
不是吗?例如A a = new A()aName = KevinaSex = 男……
通过我们实例化的对象a类的状态被对象a保持住了
如果我们的类没有属性全是方法那么有必要为了调用类中的方法先实例化一个对象出来吗?
因此笔者建议在做类的设计的时候如果类是与状态无关的类建议将其设计为static类
至于说这样做的意义首先省略了构造一个对象的性能损耗虽然可以忽略不计其次对程序员比较友好调用类的方法更加的方便
只要一个类是与状态类无关的类那么将其设计成静态类是没有问题的
对于以上的一些观点纯属个人经验之谈如果您有不同的观点欢迎共同交流