Java单例模式

## 介绍 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。 ### 注意 - 单例类只能有一个实例 - 自己创建自己的实例 - 给其他所有对象提供这种实例 #### 意图 保证一个类只有一个实例,并且全局可以访问到它 #### 主要解决 一个全局使用的类频繁地创建与销毁 #### 关键代码 ```java private SingleObject(){} ``` 构造函数私有 #### 如何解决 定义一个静态方法getInstance判断系统是否已经有这个单例,如果有则返回,如果没有则创建。 ## 实现 ![基本模型](https://upload-images.jianshu.io/upload_images/10286497-e4a6b9cbd3e0f29e.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### 单例模式的几种实现形式 1.懒汉式 ```java public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } ``` 线程安全: ```java public class Singleton { private static Singleton instance; private Singleton (){} public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } ``` 2.饿汉式 ```javaapublic class Singleton { private static Singleton instance = new Singleton(); private Singleton (){} public static Singleton getInstance() { return instance; } } ``` 3.登记式/静态内部类 ```java public class Singleton { private static class SingletonHolder { private static final Singleton INSTANCE = new Singleton(); } private Singleton (){} public static final Singleton getInstance() { return SingletonHolder.INSTANCE; } } ``` 4.枚举 ```java public enum Singleton { INSTANCE; public void whateverMethod() { } } ``` P.S.想了解如何实现,可参考 [Java利用枚举实现单例](https://blog.csdn.net/yy254117440/article/details/52305175) 参考:[菜鸟教程](http://www.runoob.com/design-pattern/singleton-pattern.html)

你可能感兴趣的:(Java单例模式)