为啥不把所有方法和变量都定义为静态,类看成一个单例?

你先抛开这个问题,然后试想一下,地球上只有你一个人类(你就是那个单例)的时候,能做什么?
谢邀。

■网友
【为啥不把所有方法和变量都定义为静态,类看成一个单例?】 OOP本来就是要面对多个对象的情况的呀。
都看成单例,同样的对象出现复数了怎么处理?
能想明白这个问题,你的问题也就解决了。

■网友
1单例模式表征的是这个程序中有且仅有一个的类,比如说在太阳系中的恒星(也就是日),你就可以写成一个单例但是放在银河系,恒星你写成单件模式就明显说不通了他们明明不是“有且仅有一个”为啥要写成单件呢?2静态变量的生存空间是全局的,也就是一次定义,永远存在,你都定义成静态,那些局部变量咋办?事实上很多变量(可能是大部分)都是相对局部存在的,只存在于相对的时间和空间中,用完了就要释放或将要释放,你给人定义成静态变量,钻石恒久远一颗永流传呢?ps:以上言论均适用于c++,不过以我对java的略懂而言,思路应该是差不多的
■网友
一般使用内部类的形式实现单例模式,这种方式对单例的操作较为灵活和清晰,特别是创建时间很清晰试想有个单例类创建依赖于某个条件,内部类实现时判断条件是否满足,不满足情况不创建单例并返回空,如果使用静态变量就会变得非常复杂
■网友
如果你的类自给自足,而且不依赖于复杂的初始化,那么你可以这么做。但是,因为静态初始化的控制权在Java手上,这么做有可能导致混乱,特别是当有许多类牵涉其中的时候。这么做通常会造成一些微妙的,不容易发现的和初始化次序有关的bug。除非你有绝对的必要实用类的单例,否则还是建议使用对象的单例,比较保险。


    推荐阅读