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;
    }
    }


  • 相关阅读:
    halcon 图像控件显示闪烁问题
    halcon中的面向对象,数据保存
    halcon图像合并(贴图到指定位置)
    如何快速创建Html头文件
    海康威视频监控设备Web查看系统(三):Web篇
    海康威视频监控设备Web查看系统(二):服务器篇
    海康威视频监控设备Web查看系统(一):概要篇
    求2个数的最小公倍数和最大公约数
    .NETCore3.0应用程序部署到CentOS7
    [转]Android Studio 1.3.1环境搭建
  • 原文地址:https://www.cnblogs.com/plan123/p/4139810.html
Copyright © 2011-2022 走看看