美文网首页
单例设计模式

单例设计模式

作者: 真是个点子王 | 来源:发表于2020-11-26 11:21 被阅读0次

    单例介绍

    • 1、什么是单例?
      • 单例的意思是一个类永远只能存在一个对象,不能创建多个对象
    • 2、为什么要用单例?
      • 开发中有很多类的对象我们只需要一个,例如虚拟机对象,任务管理器对象
      • 对象越多越占用内存,有时候只需要一个对象就可以实现业务,节约内存,提高性能
    • 3、如何实现单例?
      • 单例的实现方式目前有2中方式:
        • (1)饿汉单例设计模式
        • (2)懒汉单例设计模式

    饿汉单例模式

    • 在用类获取对象的时候,对象已经提前为你创建好了

    实现步骤

    • 1、定义一个单例类
    • 2、把类的构造器私有
    • 3、定义静态成员变量用于存储一个对象,这里直接会创建对象
    • 4、定义一个方法返回单例对象 。
    //饿汉单例模式
    // 1.定义一个单例类
    class Singleton01{
        // 3. 定义静态成员变量用于存储一个对象
        private static final Singleton01 INSTANCE = new Singleton01();
        // 2. 把构造器私有
        private Singleton01(){
        }
        // 4.定义一个方法,返回单例对象
        public static Singleton01 getInstance(){return INSTANCE};
    }
    
    public class SingleInstanceDemo01 {
        public static void main(String[] args) {
            Singleton01 s1 = Singleton01.getInstance();
            Singleton01 s2 = Singleton01.getInstance();
            System.out.println(s1 == s2);
        }
    }
    

    懒汉单例设计模式

    • 在通过类获取单例对象的时候,发现没有对象才会去创建一个对象

    实现步骤

    • 1、定义一个单例类
    • 2、把类的构造器私有
    • 3、定义静态成员变量用于存储一个对象,在懒汉单例下,这一步不直接创建对象;
    • 4、定义一个方法返回单例对象 ,这里如果对象未创建,需要创建一个对象。
    // 懒汉单例模式
    
    //1. 创建一个单类对象的类
    public class SingleInstanceDemo02 {
        public static void main(String[] args) {
            Singleton02 s1 = Singleton02.getInstance();
            Singleton02 s2 = Singleton02.getInstance();
            System.out.println(s1 == s2);
        }
    }
    class SingleIntance02{    
        // 3.定义一个静态成员变量,用于存储一个对象
        private static SingleInstance02 ins;
        // 2. 将构造器私有
        private SingleInstance02(){
        };
        // 4.定义返回单例对象的方法
        public SingleInstance02 getInstance(){
            if( ins == null ){
                ins = new SingleInstance02();
            }
            return ins;
        }
    }
    
    

    相关文章

      网友评论

          本文标题:单例设计模式

          本文链接:https://www.haomeiwen.com/subject/tysaiktx.html