单例模式

    xiaoxiao2025-03-27  22

    单例设计模式:

    意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    主要解决:一个全局使用的类频繁地创建与销毁。

    何时使用:当您想控制实例数目,节省系统资源的时候。

    如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。

    关键代码:构造函数是私有的。

     

    单例模式的从实现步骤上来讲,分为三步:

    构造方法私有,保证无法从外部通过 new 的方式创建对象。对外提供获取该类实例的静态方法类的内部创建该类的对象,通过第 2 步的静态方法返回

     

    单例模式包括饿汉和懒汉,懒汉不安全。

    懒汉方式。指全局的单例实例在第一次被使用时构建。

    饿汉方式。指全局的单例实例在类装载时构建。

     

    饿汉单例设计模式:         1. 私有化构造函数。         2. 声明本类的引用类型变量并且指向本类的对象,(private static)         3. 提供一个公共静态的方法获取本类对象。     实现:

    public class BasicSingleTon { //创建唯一实例 private static final BasicSingleTon instance = new BasicSingleTon(); //第二部暴露静态方法返回唯一实例 public static BasicSingleTon getInstance() { return instance; } //第一步构造方法私有 private BasicSingleTon() { } }

    懒汉单例设计模式:         1. 私有化构造函数。         2.  声明本类的引用类型变量,但是不要创建对象。         3. 提供一个公共静态的方法获取本类对象,获取之前先判断是否已经创建了本类的对象,         如果没有创建,创建再返回。如果已经创建了,那么直接访问即可。

    实现:

    public class LazyBasicSingleTon { private static LazyBasicSingleTon singleTon = null; public static LazyBasicSingleTon getInstance() { //延迟初始化 在第一次调用 getInstance 的时候创建对象 if (singleTon == null) { singleTon = new LazyBasicSingleTon(); } return singleTon; } private LazyBasicSingleTon() { } }

     

    最新回复(0)