Java基础语法练习33(单例模式:饿汉式和懒汉式)

单例模式:1.饿汉式 2.懒汉式

饿汉式:

步骤如下:

1.构造器私有化(防止new)

2.类的内部创建对象

3.向外暴露一个静态的公共方法

个人理解:饿(等不及)就是已经创建好了对象等你来用

示例代码如下:

java 复制代码
public class eTon {
    public static void main(String[] args){

        //第四步通过方法可以获取对象
      girlFiend instance1 = girlFiend.getInstance(); //可以理解为已经创建好了对象,就等你来拿
      System.out.println(instance1);

      girlFiend instance2 = girlFiend.getInstance(); //可以理解为已经创建好了对象,就等你来拿
      System.out.println(instance2);


        System.out.println(instance2 == instance1);

    }
}


class girlFiend{

    private String name;

    //第一步构造器私有化
    private girlFiend(String name){
        this.name = name;
    }

    //第二步在类的内部直接创建对象
    private static girlFiend gf = new girlFiend("小美");

    //第三步向外暴露一个静态的公共方法
    public static girlFiend getInstance(){
        return gf;
    }

}

懒汉式:

饿汉式可能会造成一个资源的浪费,比如创建了对象但没有使用

但是懒汉式可能会有线程风险

示例代码如下:

java 复制代码
public class lTon {
    public static void main(String[] args){
        System.out.println(Cat.n1);  //没创建实例,构造器不会被调用

        Cat c = Cat.getCat();//会创建实例,构造器会被调用

    }

}


class Cat{
    private String name;
    public static  int n1 = 100;

    //第二步定义static静态对象
    private static Cat cat;

    //第一步构造器私有化
    private Cat(String name){
        System.out.println("构造器被调用");
        this.name = name;
    }

    //第三步提供一个public的static方法,可以返回一个Cat对象
    public static Cat getCat(){
        if(cat == null){
            cat = new Cat("cat");
        }
        return cat;
    }

}
相关推荐
Chester_19997 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
EXI-小洲8 小时前
Java 操作 Word:字符串替换、图片插入、动态生成表格与API接口下载
java·开发语言·spring boot·word
会周易的程序员8 小时前
给 PLC 写一个字节码虚拟机:STVM 虚拟机架构设计
开发语言·c++·虚拟机·软plc·iec61131·stvm
机器视觉知识推荐、就业指导8 小时前
为什么老说“纯 Qt 没啥就业市场”?
开发语言·qt
telepan8 小时前
Qt 开发避坑与性能指南:如何优雅、安全地定义全局常量字符串?
开发语言·qt
m0_695251499 小时前
Qt MaintenanceTool 使用国内镜像加速下载(超详细教程)
开发语言·qt
2601_961901709 小时前
SpringBoot使用Nacos进行application.yml配置管理
java·spring boot·spring
何以解忧,唯有..10 小时前
LangChain 工具调用(Tool Calling)实战指南
java·前端·langchain
大衛說10 小时前
《Python 从入门到精通》系列总览与学习路线
开发语言·python·学习
QQ_216962909610 小时前
【源码编号:project79475】SpringBoot校内二手交易平台:商品发布、分类检索、留言交流、订单管理全流程实战
java·spring boot·后端