单例模式简介

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

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

的单例了。一般来说,这种单例实现有两种思路,私有构造器,枚举。

发布了106 篇原创文章 · 获赞 3 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/xmh_sxh_1314/article/details/104685272