zoukankan      html  css  js  c++  java
  • java中如何保证对象在内存中的唯一性

    本文转自互联网

    刚看到这个题目的朋友第一反应肯定是好奇,之后再细细思考下就会发现这个题目眼熟了。

    就算是同一个答案,如果提问的方式不同,

    往往会对回答造成干扰或者影响,

    上学的时候老师也说过差不多的话,

    学过设计模式的人看到这个题目之后肯定不会陌生:请描述java中单例设计模式的实现步骤,那估计就能答出来了。

    而java中的单例模式,相信只要是你看过一些java视频教程,肯定就能写出来的。

    所以我们在平时学习的时候要注意举一反三,掌握其精髓,这样在面试或者工作的时候才能应对自如,久而久之,就成为了大神级别。

    解决的问题:保证对象在内存中的唯一性。


    平时在开发的时候经常会遇到如下场景:多程序读取一个配置文件时,记录日志时。

    如果创建多个对象的话,可能会引发出各种各样的问题,这时,就需要我们保证这个对象在内存中的唯一性

    java中的Runtime()方法就是单例设计模式进行设计的。


    如何保证对象唯一性呢?


    思考:
    1,不让其他程序创建该类对象。
    2,在本类中创建一个本类对象。
    3,对外提供方法,让其他程序获取这个对象。


    步骤:
    1,因为创建对象都需要构造函数初始化,只要将本类中的构造函数私有化,其他程序就无法再创建该类对象;
    2,就在类中创建一个本类的对象;
    3,定义一个方法,返回该对象,让其他程序可以通过方法就得到本类对象。这样方便我们进行控制;


    代码体现:
    1,私有化构造函数;
    2,创建私有并静态的本类对象;
    3,定义公有并静态的方法,返回该对象。

    //饿汉式
    class Single{
    private Single(){} //私有化构造函数。
    private static Single s = new Single(); //创建私有并静态的本类对象。
    public static Single getInstance(){ //定义公有并静态的方法,返回该对象。
    return s;
    }
    }
    //懒汉式:延迟加载方式。
    class Single2{
    private Single2(){}
    private static Single2 s = null;
    public static Single2 getInstance(){
    if(s==null)
    s = new Single2();
    return s;
    }
    }


  • 相关阅读:
    如何实现对ELK各组件的监控?试试Metricbeat
    Dubbo日志链路追踪TraceId选型
    Spring Security如何优雅的增加OAuth2协议授权模式
    聊一聊:MyBatis和Spring Data JPA的选择问题
    Java微服务 vs Go微服务,究竟谁更强!?
    你一定需要知道的高阶JAVA枚举特性!
    当音乐学博士搞起编程,用一本书改变了Java世界!
    Spring Boot 2.x基础教程:使用Flyway管理数据库版本
    文件上传的单元测试怎么写?
    Spring Boot 2.x基础教程:多个文件的上传
  • 原文地址:https://www.cnblogs.com/plan123/p/4139810.html
Copyright © 2011-2022 走看看