单例模式

在这里插入图片描述什么是单例?为什么要用单例?一个类被设计出来,就代表它表示具有某种行为(方法),属性(成员变量),而一般情况下,当我们想使用这个类时,会使用new关键字,这时候jvm会帮我们构造一个该类的实例。而我们知道,对于new这个关键字以及该实例,相对而言是比较耗费资源的。所以如果我们能够想办法在jvm启动时就new好,或者在某一次实例new好以后,以后不再需要这样的动作,就能够节省很多资源了。哪些类可以使用单例?一般而言,我们总是希望无状态的类能够设计成单例,那这个无状态代表什么呢? 简单而言,对于同一个实例,如果多个线程同时使用,并且不使用额外的线程同步手段,不会出现线程同步的问题,我们就可以认为是无状态的,再简单点:一个类没有成员变量,或者它的成员变量也是无状态的,我们就可以考虑设计成单例。实现方法好了,我们已经知道什么是单例,为什么要使用单例了,那我们接下来继续讨论下怎么实现单例。一般来说,我们可以把单例分为行为上的单例和管理上的单例。行为上的单例代表不管如何操作(此处不谈cloneable,反射),至始至终jvm中都只有一个类的实例,而管理上的单例则可以理解为:不管谁去使用这个类,都要守一定的规矩,比方说,我们使用某个类,只能从指定的地方’去拿‘,这样拿到就是同一个类了。而对于管理上的单例,相信大家最为熟悉的就是spring了,spring将所有的类放到一个容器中,以后使用该类都从该容器去取,这样就保证了单例。所以这里我们剩下的就是接着来谈谈如何实现行为上的单例了。一般来说,这种单例实现有两种思路,私

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

有构造器,枚举。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值