设计模式——单例设计模式

CSDN话题挑战赛第1期
活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f
参赛话题:Java学习记录
话题描述:可以记录一下平时学习Java中的一些知识点、心得、例题、常见的问题解决

创作模板:

一、前言

  • 学习概述:单例设计模式
  • 学习目标:单例设计模式

二、单例设计模式

什么是单例?

单例的意思就是只能创建一个对象。

为什么要用单例?

开发中有很多类只我们只需要一个,例如:虚拟机对象!任务管理器对象

对象越多越占内存,有时只需要一个对象就可以实现业务,单例可以节约内存,提高性能!

如何实现单例?
例的实现方式目前有2种方式:

​ (1)饿汉单例设计模式

​ 通过类获取单例对象的时候,对象已经提前创建好了

​ 实现步骤:

​ 1.定义一个单例类

​ 2.把类的构造方法私有

​ 3.定义一个静态成员变量用于存储一个对象

​ (饿汉单例在返回对象的时候 对象要已经创建好 所以这里直接创建)

​ 4.定义一个方法直接返回单例对象

package com.day05_singleintance;
/*
    饿汉单例设计一个单例模式的类
 */
public class SingleInstanceDemo1 {
    public static void main(String[] args) {
        SingleInstance s1 = SingleInstance.getInstance();
        SingleInstance s2 = SingleInstance.getInstance();

        SingleInstance s3 = SingleInstance.ins;
        System.out.println(s3);
    }
}
class SingleInstance{
    //2.定义一个静态成员变量用于存储一个对象 !
    public static SingleInstance ins = new SingleInstance(); //对象已经提前创建好
    //1.把类的构造方法私有 构造器只能在本类当中才能访问
    private SingleInstance(){

    }


    //3.提供一个方法 返回 单例对象
    public static SingleInstance getInstance(){
        return ins;
    }
}

​ (2)懒汉单例设计模式

​ 通过类获取单例对象的时候发现没有对象才会去创建一个对象。

​ 实现步骤:

​ 1.定义一个单例类

​ 2.把类的构造方法私有

​ 3.定义一个静态成员变量用于存储一个对象

​ (懒汉单例不能直接创建对象,必须需要的时候才去创建)

​ 4.定义方法 返回单例对象 判断对象不存在才创建一次,存在直接返回

package com.day05_singleintance;
/*
    饿汉单例设计模式
        通过类获取单例对象的时候发现没有对象才会去创建对象
 */
public class SingleInstanceDemo2 {
    public static void main(String[] args) {
        SingleInstance2 s1 = SingleInstance2.getInstance();
        SingleInstance2 s2 = SingleInstance2.getInstance();
        System.out.println(s1 == s2);
    }
}
class SingleInstance2{
    //2.定义静态变量用于存储对象
    private static SingleInstance2 ins;  //引用类型 默认值为Null
    //1.私有构造方法 避免被创建对象
    private SingleInstance2(){

    }
    //3.定义方法返回一个单例对象
    public static SingleInstance2 getInstance(){
        //如果这个对象为空的话 就创建对象
        if (ins == null){
            ins = new SingleInstance2();
        }
        return ins;
    }
}

CSDN话题挑战赛第1期
活动详情地址:https://marketing.csdn.net/p/bb5081d88a77db8d6ef45bb7b6ef3d7f

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值