为啥不把所有方法和变量都定义为静态,类看成一个单例?
你先抛开这个问题,然后试想一下,地球上只有你一个人类(你就是那个单例)的时候,能做什么?
谢邀。
■网友
【为啥不把所有方法和变量都定义为静态,类看成一个单例?】 OOP本来就是要面对多个对象的情况的呀。
都看成单例,同样的对象出现复数了怎么处理?
能想明白这个问题,你的问题也就解决了。
■网友
1单例模式表征的是这个程序中有且仅有一个的类,比如说在太阳系中的恒星(也就是日),你就可以写成一个单例但是放在银河系,恒星你写成单件模式就明显说不通了他们明明不是“有且仅有一个”为啥要写成单件呢?2静态变量的生存空间是全局的,也就是一次定义,永远存在,你都定义成静态,那些局部变量咋办?事实上很多变量(可能是大部分)都是相对局部存在的,只存在于相对的时间和空间中,用完了就要释放或将要释放,你给人定义成静态变量,钻石恒久远一颗永流传呢?ps:以上言论均适用于c++,不过以我对java的略懂而言,思路应该是差不多的
■网友
一般使用内部类的形式实现单例模式,这种方式对单例的操作较为灵活和清晰,特别是创建时间很清晰试想有个单例类创建依赖于某个条件,内部类实现时判断条件是否满足,不满足情况不创建单例并返回空,如果使用静态变量就会变得非常复杂
■网友
如果你的类自给自足,而且不依赖于复杂的初始化,那么你可以这么做。但是,因为静态初始化的控制权在Java手上,这么做有可能导致混乱,特别是当有许多类牵涉其中的时候。这么做通常会造成一些微妙的,不容易发现的和初始化次序有关的bug。除非你有绝对的必要实用类的单例,否则还是建议使用对象的单例,比较保险。
推荐阅读
- 为啥看到书柜上的藏书会有心旷神怡的感觉
- 为啥知乎上普便有一种【我在北上广深打工,所以拥有更好的视野】这样的错觉
- 为啥工商银行的用户体验如此之差
- 汽车|看了中消协4S店服务测评调查结果,终于知道法系车为啥卖不好了
- 你为啥从窝窝商城离职?
- 为啥5G和2.4G默认的BSSID是相同的
- 为啥电器实体店的价格比淘宝贵那么多
- 现在在线学习视频有很多了,为啥大部分人还是喜欢下载下来观看
- 为啥到现在你还没有女朋友 ?
- 天赐的声音|33岁张雨绮为啥总离婚?看过这些照片就明白了,都是性感惹得祸
