• Java学习笔记之---单例模型


    Java学习笔记之---单例模型

    单例模型分为:饿汉式,懒汉式

    (一)要点

    1.某个类只能有一个实例

    2.必须自行创建实例

    3.必须自行向整个系统提供这个实例

    (二)实现

    1.只提供私有的构造方法

    2.含有一个该类的静态私有对象

    3.提供一个静态的公有方法用于创建,获取静态私有对象

    (三)饿汉式

    在对象创建过程中实例化

    public class EHan {
        //私有构造函数
        private EHan(){
        }
        //创建该类型的私有静态实例
        private static EHan ehan=new EHan();
        //创建该类型的公有静态方法,返回静态实例对象
        public static EHan getehan(){
            return ehan;
        }
    }
    class EHanTest{
        public static void main(String[] args){
            EHan one=EHan.getehan();
            EHan two=EHan.getehan();
            System.out.println(one==two);
        }
    }

    运行结果:true

    (四)懒汉式

    静态公有方法中实例化

    public class EHan {
    
        //私有构造函数
    
        private EHan(){
    
        }
    
        //创建该类型的私有静态实例
    
        private static EHan ehan=null;
    
        //创建该类型的公有静态方法,返回静态实例对象
    
        public static EHan getehan(){
    
            if(ehan==null){
    
                ehan=new EHan();
    
            }
    
            return ehan;
    
        }
    
    }
    
    class EHanTest{
    
        public static void main(String[] args){
    
            EHan one=EHan.getehan();
    
            EHan two=EHan.getehan();
    
            System.out.println(one==two);
    
        }
    
    }

    运行结果:true

    (五)懒汉式PK饿汉式

    1.饿汉式比懒汉式块

    2.饿汉式线程安全,懒汉式存在线程风险

    (六)单例模型的优点

    1.在内存中只有一个对象,节省内存空间

    2.避免频繁的创造和销毁对象,提高性能

    3.避免对共享资源的多重占用

    (七)单例模型的缺点

    1.扩展比较困难

    2.如果实例化后的对象长期不利于,系统将默认为垃圾进行回收,造成对象状态丢失

  • 相关阅读:
    vue中路由跳转传递参数
    父组件向子孙组件传递数据provide/inject
    微信、QQ等内置浏览器定位失败
    Java ArrayList类
    java 生成 [1, n] 之间的随机数
    Java 构造方法
    Java this关键字
    Java private关键字及作用
    Java 随笔
    Java 内存划分
  • 原文地址:https://www.cnblogs.com/dyddzhp/p/11175940.html
Copyright © 2020-2023  润新知