zoukankan      html  css  js  c++  java
  • 单例模式

    package singleton;
    //单例模式的意义,让类只能创建一个对象,目的是减少对象的创建个数节约内存空间
    //调用同一个方法,如果有几千上万人去调用,按照对象调用方法那么需要创建几千上万个对象,单例模式目的在共享一个对象,创建对象的过程私有化
    //根据分析需要在本类中某个成员位置进行new来创建唯一一个对象,那么应该在哪里进行创建呢
    
    public class SingleTon {
        //重写无参数构造方法,修改权限符,外界不允许随意调用
        private SingleTon(){
        }
        //不能直接让别人操作属性,万一给你赋值为null呢,static目的是让这个属性变成类的,只加载一次
        private static SingleTon singleTon=new SingleTon();//饿汉式:类加载的时候就创建了
        //private static SingleTon singleTon;//懒汉式:只声明,当调用方法时才创建对象
        //通过使用getSingleTon方法创建获得对象,类名调用
        public static SingleTon getSingleTon(){
    //        if(singleTon==null){//懒汉式:在方法中创建,调用时才创建。加一段判断,确保第二次调用时不会再创建对象
    //            singleTon=new SingleTon();
    //        }
            return singleTon;
        }
        
        //分析创建对象的位置
        //属性---可以,不过得注意
        //方法----不行,可以创建,也有返回值,但是保证不了唯一,调用几次就创建几个。
        //构造方法---不行,本来就要调它,不能再它自己里面调用自己
        //块--不行,可以创建,但是无法给别人使用,没有返回值
    //    {
    //        SingleTon ston=new SingleTon();
    //    }
    
    }
    
    /**
     * 总结:
     * 1.私有的构造方法
     * 2.私有的静态的当前类对象作为属性
     * 3.公有的静态方法返回当前类对象
     * 单例模式的实现,指对象的加载
     * 饿汉试(立即加载-类加载时就创建对象) 
     * 懒汉式(延迟加载--调用方法时才创建对象)
     * 生命周期托管(对象加载过程交给别人)
     **/
  • 相关阅读:
    HappyLeetcode45:Divide Two Integers
    HappyLeetcode44:Plus One
    HappyLeetcode43:Symmetric Tree
    HappyLeetcode42:Intersection of Two Linked Lists
    特征向量中心性(从文献中摘抄)
    二叉树(普通无规律)
    链式队列
    链式栈
    链表
    指针
  • 原文地址:https://www.cnblogs.com/hebiao/p/12326894.html
Copyright © 2011-2022 走看看