Tag - 设计模式

Java 设计模式    2019-05-06 17:46:52    7    0    0

单例模式

单例模式算是最简单的一种设计模式了。

基本上所有讲设计模式的文章或者博客都会把他放到最前面。

虽然这种模式最简单, 但是很多地方都能够用到, 比如说曾经风靡于各个博客公众号和各类管理系统的Shiro框架, 有经典的 Spring, 都广泛的使用了单例模式。

这篇文章, 将会按照是什么, 为什么, 怎么做来讲解单例模式。

什么是单例模式

单例模式的定义是什么呢?

引用自 Wikipedia - 单例模式 :

单例模式, 也叫单子模式, 是一种常用的软件设计模式。在应用这个模式时, 单例对象的类必须保证只有一个实例存在。

为什么是单例模式

同样引用自 Wikipedia - 单例模式, 单例模式的作用 :

许多时候整个系统只需要拥有一个的全局对象, 这样有利于我们协调系统整体的行为。比如在某个服务器程序中, 该服务器的配置信息存放在一个文件中, 这些配置数据由一个单例对象统一读取, 然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。

怎么做出一个单例

1.抽象类

最简单粗暴的方式, 利用JVM的类加载原理, 写一个抽象类, 这个类是天然单例, 且一定能保证在JVM的生命周期内是单例。

这种方式最常用在需要全局唯一的工具类中, 如ShiroSecurityUtil

  1. public abstract class Singleton {
  2. public static Object doSomething(){
  3. // doSomething...
  4. }
  5. }

2.使用final关键字

参考Wikipedia - 单例模式 Java 实现

又名饿汉模式

这种方法的好处在于我们不需要担心单例类无意间被继承而失去全局唯一的特性, 同时还可以自由的在单例中添加非静态方法。

  1. public class Singleton {
  2. pri