单例模式是我们在开发软件的过程中经常用到的23中常用的java模式之一,主要的功能就是保证我们所使用的对象只有一个,这也在一方面减少了出错的可能性,增强了代码的健壮。单例模式一般来说有两种实现的方式,一种称之为饿汉模式,另一中成为懒汉模式。饿汉模式顾名思义,就是来者不拒,全盘搞定嘛,请看代码:

package Singleton;

public class eHan {

    //1、首先必须将构造函数声明为私有的,用来防止外部代码直接访问
    private eHan(){

    }
    //2、声明一个静态的类属的成员变量,也就是我们的实例
    static eHan Singleton1=new eHan();

    //3、使用一个获得器来帮助外界获得此类的唯一的实例,必须是类属的静态方法
    public static eHan getInstance() {
        // TODO Auto-generated method stub
        return Singleton1;
    }
}

另外一种懒汉模式就是指只有当我们要使用这个对象的实例的时候,才会去创建它,就好比一个懒汉,只有当他饿的实在受不了的时候,他才会去找吃的。请看下面的代码:

package Singleton;

public class lanHan {

    //1、第一步仍然是将构造函数声明为私有的
    private lanHan() {
        // TODO Auto-generated constructor stub
    }

    //2、继续声明一个静态的类属的成员变量、
    static lanHan Singleton=new lanHan();

    //3、也通过使用一个获取器来获得此类的唯一的一个实例,必须是类属的静态方法
    public static lanHan getInstance(){
        if(Singleton==null){
            Singleton=new lanHan();
        }
        return Singleton;
    }

}

只有实践才是检验真理的唯一标准,下面请看:

package Singleton;

public class Test {

     public static void main(String []args){
         //恶汉模式
         eHan e1=eHan.getInstance();
         eHan e2=eHan.getInstance();
         if(e1==e2){
             System.out.println("e1与e2是同一个实例");
         }else{
             System.out.println("e1与e2不是一个实例");
         }

         //懒汉模式
         lanHan l1=lanHan.getInstance();
         lanHan l2=lanHan.getInstance();
         if(l1==l2){
             System.out.println("l1与l2是同一个实例");
         }else{
             System.out.println("l1与l2不是一个实例");
         }

     }
}

接下来是运行结果:

e1与e2是同一个实例
l1与l2是同一个实例

由上我们不难看出,我们使用‘==’来进行判断对象在内存中的存储位置,而不是对象的内容的相等性,最后得出单例模式确实只是创建了一个实例,所以我们对其的操作,也只是对一个对象的操作,这样大大的减少了出错的可能性,是我们的代码更加健壮。代码比较简单,但是思想值得借鉴。

Java单例模式之饿汉模式与懒汉模式的更多相关文章

  1. java单例模式(饿汉式和懒汉式)

    1 /* 2 * 设计模式:对问题行之有效的解决方式.其实它是一种思想. 3 * 4 * 1,单例设计模式 5 * 解决的问题:就是可以保证一个类在内容中的对象唯一性. 6 * 7 * 必须对于多个程 ...

  2. java 设计模式 单例模式之饿汉模式/懒汉模式 singleton pattern

    https://v.qq.com/x/page/e0364ung5zp.html 讲的不错, 关于 饿汉式单例模式 code Student 类: package com.test;//单例模式之   ...

  3. Java-设计模式-单例模式-饿汉模式、懒汉模式

    //-------------------------------------------------------------饿汉模式--开始----------------------------- ...

  4. java 单例模式之线程安全的饿汉模式和懒汉模式

    转载博主:thankyou https://blog.csdn.net/twj13162380953/article/details/53869983 理解: 饿汉式获取实例的步骤简单所以线程更安全. ...

  5. 设计模式-单例模式(Singleton Pattren)(饿汉模式和懒汉模式)

    单例模式(Singleton Pattren):确保一个类在整个应用中只有一个实例,并提供一个全局访问点. 实现要点: 1. 私有化构造方法 2. 类的实例在类初始化的时候创建 3. 提供一个类方法, ...

  6. java基础10 单例模式之饿汉式和懒汉式单例

    前言: 软件行业中有23中设计模式 单例模式    模版模式    装饰者模式    观察者模式    工厂模式    ........... 单例模式 1. 单例模式包括 1.1 饿汉式单例 1.2 ...

  7. java 懒汉式、饿汉式单例模式 不含多线程的情况

    //饿汉式 提前生成了单例对象 class Singleton{ private static final Singleton instance=new Singleton(); private Si ...

  8. 单例模式之懒汉模式,懒汉模式之高效模式,DLC双判断模式

    import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; imp ...

  9. java 开发中经常问到得懒汉模式 (单利模式)

    //懒汉模式 class Single { public static Single s = null; public Single (){} public static Single getInst ...

随机推荐

  1. ubuntu 命令行下格式化U盘,磁盘分区

    命令行格式化磁盘一般是:先卸载,后格式化. 先说格式化U盘的方法,格式化磁盘某个分区是同样的道理. 一般情况下U盘会挂载在/meida/<username>/<disk>目录下 ...

  2. js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面

    js 利用 ajax 加载 js ,显示加载进度 ,严格按照js的顺序先后加载到页面 , 做手机端开发时,发现一个问题,有些浏览器,在网速比较慢的情况下,js文件没有加载完,后续的调用已经开始调用了, ...

  3. 转:Xming + PuTTY 在Windows下远程Linux主机使用图形界面的程序

    一.原理Linux/Unix的X Window具有网络透明性.X Window系统里有一个统一的Server来负责各个程序与显示器.键盘和鼠标等输入输出设备的交互,每个有GUI的应用程序都通过网络协议 ...

  4. leetcode刷题笔记08 字符串转整数 (atoi)

    题目描述 实现 atoi,将字符串转为整数. 在找到第一个非空字符之前,需要移除掉字符串中的空格字符.如果第一个非空字符是正号或负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即 ...

  5. Dockerfile怎么创建镜像

    编写完成 Dockerfile 之后,可以通过 docker build 命令来创建镜像. 基本的格式为 docker build [选项] 路径,该命令将读取指定路径下(包括子目录)的 Docker ...

  6. Python3 CGI编程

    什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户 ...

  7. 利用QrCode.Net生成二维码 asp.net mvc c#

    利用QrCode.Net生成二维码 asp.net mvc c# 里面介绍了.net的方式及js的方式,还不错. 里面用到的qrcode.net的类库下载地址:https://qrcodenet.co ...

  8. Save results to different files when executing multi SQL statements in DB Query Analyzer 7.01

        1 About DB Query Analyzer DB Query Analyzer is presented by Master Genfeng,Ma from Chinese Mainl ...

  9. 【Android应用开发】 Universal Image Loader ( 使用简介 | 示例代码解析 )

    作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50824912 相关地址介绍 : -- Universal I ...

  10. Hadoop就业面试题

    ----------------------------------------------------------------------------- [申明:资料来源于互联网] 本文链接:htt ...