iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >一文详解Java的饿汉和懒汉设计模式
  • 621
分享到

一文详解Java的饿汉和懒汉设计模式

Python 官方文档:入门教程 => 点击学习

摘要

目录饿汉设计模式懒汉设计模式饿汉和懒汉模式的区别本文主要讲述java的饿汉和懒汉设计模式 饿汉和懒汉设计模式的目的:使得该类的对象,只能有一个,不允许其他类,创建该类的对象。 饿汉设

本文主要讲述java的饿汉和懒汉设计模式

饿汉和懒汉设计模式的目的:使得该类的对象,只能有一个,不允许其他类,创建该类的对象。

饿汉设计模式

示例代码如下:

public class HungerModel {
    public static void main(String[] args) {
//        GirlFriend girlFriend1 = new GirlFriend("white", 34);
//        GirlFriend girlFriend2 = new GirlFriend("jack", 20);
//        System.out.println(girlFriend1);
//        System.out.println(girlFriend2);
        GirlFriend girlFriend1 = GirlFriend.getInstance();
        System.out.println(girlFriend1);

        GirlFriend girlFriend2 = GirlFriend.getInstance();
        System.out.println(girlFriend2);

        System.out.println(girlFriend1 == girlFriend2);

    }

}

// 只能有一个女朋友,即只能创建一个girlfriend对象?

class GirlFriend {
    private String name;
    private int age;
    private static GirlFriend girl = new GirlFriend("布尔玛",20);

    

    public static GirlFriend getInstance(){
        return girl;
    }

    private GirlFriend(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "GirlFriend{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

运行结果如下:

懒汉设计模式

示例代码如下:

public class LazyModel {
    public static void main(String[] args) {
        GirlFriend_ girlFriend1 = GirlFriend_.getInstance();
        System.out.println(girlFriend1);

        GirlFriend_ girlFriend2 = GirlFriend_.getInstance();
        System.out.println(girlFriend2);

        System.out.println(girlFriend1 == girlFriend2);
    }
}
class GirlFriend_ {
    private String name;
    private int age;
    private static GirlFriend_ girlFriend ; // 默认初始值为null

    

    private GirlFriend_(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public static GirlFriend_ getInstance(){
        if(girlFriend == null){
            girlFriend = new GirlFriend_("布尔玛",20);
        }
        return girlFriend;
    }

    @Override
    public String toString() {
        return "GirlFriend_{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

运行结果如下:

饿汉和懒汉模式的区别

饿汉模式,由于直接在类静态成员变量初始化时,创建该类的对象,导致该类对象随着类的存在,一直存在,有可能该对象一直得不到使用,因此饥饿,造成资源浪费;

示例代码如下:

public class HungerModel {
    public static void main(String[] args) {
        System.out.println(GirlFriend.id);

    }

}

// 只能有一个女朋友,即只能创建一个girlfriend对象?

class GirlFriend {
    private String name;
    private int age;
    public static int id = 1001;
    private static GirlFriend girl = new GirlFriend("布尔玛",20);

    

    public static GirlFriend getInstance(){
        return girl;
    }

    private GirlFriend(String name, int age) {
        this.name = name;
        this.age = age;
        System.out.println("GirlFriend类的private GirlFriend(String name, int age)构造器被调用");
    }

    @Override
    public String toString() {
        return "GirlFriend{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

运行结果如下:

由此看出,没有使用该对象,但是该对象仍然被创建,浪费资源。

懒汉模式,先声明静态变量【对象的引用】,在公共方法【返回对象】时,判断当前对象是否为空,若为空,则创建该对象,返回对象实例,这样,当调用该对象时,才会创建对象,不会造成资源浪费。

示例代码如下:

public class LazyModel {
    public static void main(String[] args) {
        System.out.println(GirlFriend_.id);
        System.out.println(GirlFriend_.getInstance());
    }
}
class GirlFriend_ {
    private String name;
    private int age;
    public static int id = 1002;
    private static GirlFriend_ girlFriend ; // 默认初始值为null

    

    private GirlFriend_(String name, int age) {
        this.name = name;
        this.age = age;
        System.out.println("GirlFriend_类的private GirlFriend_(String name, int age)构造器被调用");
    }

    public static GirlFriend_ getInstance(){
        if(girlFriend == null){
            girlFriend = new GirlFriend_("布尔玛",20);
        }
        return girlFriend;
    }

    @Override
    public String toString() {
        return "GirlFriend_{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

运行结果如下:

到此这篇关于一文详解Java的饿汉和懒汉设计模式的文章就介绍到这了,更多相关Java设计模式内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 一文详解Java的饿汉和懒汉设计模式

本文链接: https://www.lsjlt.com/news/175321.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 一文详解Java的饿汉和懒汉设计模式
    目录饿汉设计模式懒汉设计模式饿汉和懒汉模式的区别本文主要讲述java的饿汉和懒汉设计模式 饿汉和懒汉设计模式的目的:使得该类的对象,只能有一个,不允许其他类,创建该类的对象。 饿汉设...
    99+
    2022-12-20
    Java饿汉 懒汉 设计模式 Java饿汉设计模式 Java 懒汉设计模式 Java 设计模式
  • 详解Java单例模式中的饿汉和懒汉模式
    目录一.什么是单例模式一.饿汉模式1.饿汉模式的概念2.饿汉模式代码3.多线程是否线程安全二.懒汉模式1.懒汉模式的概念2.单线程情况下的懒汉模式3.多线程情况下的懒汉模式一.什么是...
    99+
    2023-05-14
    Java单例模式 Java单例饿汉模式 Java单例懒汉模式
  • 设计模式之单例模式(懒汉, 饿汉)
    文章目录 一. 单例模式概述二. 单例模式的实现1. 饿汉模式2. 懒汉模式 一. 单例模式概述 单例模式是一种常用的软件设计模式, 该模式的主要目的是确保某一个类在内存中只能有一个实...
    99+
    2023-09-05
    单例模式 设计模式 java 多线程 线程安全
  • Java设计模式之单例模式实例详解【懒汉式与饿汉式】
    本文实例讲述了Java设计模式之单例模式。分享给大家供大家参考,具体如下:单例模式就是产生一个对象实例,供外外部访问。它的应用场景就是在这个类在全局真资源需要统一访问,否则会造成混乱时,才有必要设计成单例。懒汉式,就是在使用这个对象时,才去...
    99+
    2023-05-31
    java 设计模式 单例模式
  • C++单例模式的懒汉模式和饿汉模式详解
    目录懒汉模式饿汉模式线程安全的懒汉模式总结懒汉模式 懒汉模式在第一次用到类实例的时候才会去实例化,就是不到调用getInstance函数时,这个类的对象是一直不存在的。懒汉本身是线程...
    99+
    2024-04-02
  • Java单例模式的线程安全,饿汉和懒汉模式详解
    单例模式 创建唯一的一个变量(对象),在类中将构造函数设为protected或者private(析构函数设为相对应的访问权限),故外部不能实例化对象,再提供访问它的一个全局访问点,即...
    99+
    2024-04-02
  • java 单例模式(懒汉式与饿汉式)
    java 单例模式单例模式是一种常用的软件设计模式。在它的可信结构中只包含一个被实例化单例的特殊类。通过单例设计模式可以把整系统中的一个类只有一个实例。单例设计模式又分为两种方式,懒汉式和饿汉式。 (1)懒汉式,就是只有当调用getInst...
    99+
    2023-05-31
    java 单例模式 ava
  • 24种设计模式之单例模式(饿汉式、懒汉式)
    一、单例模式 单例模式( Singleton Pattern )是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。单例模式是创建型模式。单例模式在现实生活中应用也非常广泛,例如,总统,班主任等。J2EE标准中的Servl...
    99+
    2023-09-23
    java Powered by 金山文档
  • java中懒汉和饿汉模式有什么不同
    这期内容当中小编将会给大家带来有关java中懒汉和饿汉模式有什么不同,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2...
    99+
    2023-06-14
  • Java的懒汉与饿汉模式怎么实现
    今天小编给大家分享一下Java的懒汉与饿汉模式怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先,我们先了解下单例模...
    99+
    2023-06-27
  • java懒汉式和饿汉式有什么不同
    懒汉式和饿汉式都是单例设计模式的实现方式,但它们有以下不同:1. 初始化时间:饿汉式是在类加载的时候就创建单例对象,而懒汉式是在第一...
    99+
    2023-08-30
    java
  • Java单例模式中的饿汉和懒汉模式怎么实现
    今天小编给大家分享一下Java单例模式中的饿汉和懒汉模式怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。什么是单例模式...
    99+
    2023-07-05
  • java 中单例模式饿汉式与懒汉式的对比
    java 中单例模式饿汉式与懒汉式的对比概念:保证一个类仅有一个实例,并提供一个访问它的全局访问点。以前我们的做法是设置一个全局变量,也就是让它使得一个对象被访问。但是它不能防止你实例多个对象。这时我们可以让类自身负责保存它的唯一实例,这个...
    99+
    2023-05-31
    java 单例模式 中单
  • C++单例模式的懒汉模式和饿汉模式怎么实现
    本文小编为大家详细介绍“C++单例模式的懒汉模式和饿汉模式怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“C++单例模式的懒汉模式和饿汉模式怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。懒汉模式懒...
    99+
    2023-06-29
  • Java多线程案例之单例模式懒汉+饿汉+枚举
    目录前言:1.单例模式概述2.单例模式的简单实现2.1饿汉模式2.2懒汉模式2.3枚举实现单例模式前言: 本篇文章将介绍Java多线程中的几个典型案例之单例模式,所谓单例模式,就是一...
    99+
    2024-04-02
  • 使用java怎么实现一个饿汉模式单例
    今天就跟大家聊聊有关使用java怎么实现一个饿汉模式单例,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。常用的java框架有哪些1.SpringMVC,Spring Web MVC是一...
    99+
    2023-06-14
  • Java设计模式——工厂设计模式详解
    工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类。工厂模式的形态工厂模式主要用一下几种形态:简单工厂(Simple Factory)。2:工厂方法(Factory Method)。3:抽象工厂(Abstract...
    99+
    2023-05-30
    java 设计模式 ava
  • 一文详解Golang的中间件设计模式
    目录背景Demo验证结论背景 记录一下自己在go开发和学习上的一些笔记 最近在看一些rpc框架的使用原理和源码的时候,对中间件的实现非常感兴趣,然后也看了一下grpc的中间件的用法,...
    99+
    2023-03-06
    Golang中间件设计模式 Golang中间件 Go 中间件
  • java设计模式策略模式图文示例详解
    目录策略模式意图问题解决方案真实世界类比策略模式结构伪代码策略模式适合应用场景实现方式策略模式优缺点策略模式优缺点与其他模式的关系策略模式 亦称:Strategy 意图 策略模式是一...
    99+
    2024-04-02
  • java设计模式--桥接模式详解
    目录引例桥接模式实战示例代码:总结引例 需求:对不同手机类型的不同品牌(比如按键手机:诺基亚、翻盖手机:纽曼、智能手机:华为、小米)实现操作编程(比如: 开机、关机、打电话)。 先来...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作