0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

单例模式(Singleton Pattern)实现的方法

冬至子 ? 来源:全栈开发的码农 ? 作者:全栈开发的码农 ? 2023-06-01 11:44 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

单例模式是指某个类只允许存在一个实例对象,例如在打印机打印文件时,一次只允许打印一个文件;一个程序里的相同弹出对话框只允许有一个。

单例模式通常在需要控制对象数量以节省资源消耗的情况,在实际软件设计中非常常用,特别是在多线程多进程时,可以避免产生多个实例对象,造成资源浪费。

实现的方法是在类里创建一个private构造函数,这样其他类就无法通过new的方式生成其实例,只能通过类内部所定义的getInstance()方法生成实例,具有私有的构造函数是单例模式的一个显著特征。单例模式的一个简单示例类图如下图所示:

图片

SingleInstance类的代码如下:

package singleton;
public class SingleInstance {
  //创建类时创建一个实例
  private static SingleInstance singleInstance=new SingleInstance();
  //私有构造函数
  private SingleInstance() {};
  //生成单实例
  public static SingleInstance getSingleInstance() {
    return singleInstance;
  }
  public void showMessage() {
    System.out.println("单例模式信息!");
  }
}

调用SingleInstance生成对象的错误方法:用new方法生成对象时,编译器会报错。

图片

调用SingleInstance生成对象的正确方法:

public class SingletonPattern {
  public static void main(String[] args) {
    SingleInstance singleInstance = SingleInstance.getSingleInstance();
    singleInstance.showMessage();
    /*错误的调用方法
    SingleInstance singleInstance = new SingleInstance();
    */
  }
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 打印机
    +关注

    关注

    10

    文章

    804

    浏览量

    47505
  • 编译器
    +关注

    关注

    1

    文章

    1663

    浏览量

    50476
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    dlpc3470 Splash Pattern模式为什么会设置最大Pattern周期,这个最大周期能否更改?

    dlpc3470 Splash Pattern 模式为什么会设置最大 Pattern 周期,这个最大周期能否更改?
    发表于 02-19 08:41

    DLP4500每个pattern的曝光时间怎么设置?

    我的应用将图片烧录到flash中然后在pattern模式下play。但是由于要显示的pattern太多了,总是需要不停地upload bin文件,时间都花在了烧录bin文件上了。因此我想用
    发表于 02-24 08:17

    请问external pattern sequence子模式的正确使用方式是什么?

    在做结构光成像的相关研究中,想投影大量正弦条纹图(比如60张)并配合相机实现外触发,根据查阅用户手册和编程手册,应该将lightcrafter设置为hdmi模式下的external pattern
    发表于 02-28 08:38

    DLP中video模式pattern模式有什么区别?

    你好,请问,在DLP相关文档中,有提到video模式pattern模式,请问这两种模式有什么区别?
    发表于 03-03 08:32

    2018年Python面试必看的10个面试题

    模式是最好的解决方案。__new__()在__init__()之前被调用,用于生成实例对象。利用这个方法和累的属性的特点可以实现设计
    发表于 07-18 14:52

    OpenHarmony中的模式实践

    本文件简述了实例的基本知识及其应用场景,并以OpenHarmony中的代码为分别从C和C++语言角度来分析和学习实例模式实例
    发表于 09-15 09:27

    利用golang优雅的实现实例分享

    1、利用golang优雅的实现实例平时编写代码过程中,经常会遇到对于全局角度只需运行一次的代码,比如全局初始化操作,设计模式中的
    发表于 10-17 16:46

    关于iOS开发单使用问题

    原文链接:Avoiding Singleton Abuse 导语 (Singletons),是Cocoa的核心模式之一。在iOS上,
    发表于 09-25 16:25 ?0次下载

    模式详解

    是private的话,会不更好的封装该内呢?我主要是应用在使用普通类模拟枚举类型里,后来发现这就是传说中的模式。构造函数弄成private 就是
    发表于 09-27 15:10 ?0次下载

    模式分成饿汉模式和懒汉模式解析

    定义:作为对象的创建模式模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为
    发表于 12-11 09:49 ?1780次阅读

    为什么C++模式不能直接全部使用static变量和static函数呢?

    通过getInstance()函数获取对象,这种模式的关键之处不是在于强迫你用函数来获取对象。关键之处是让static对象定义在函数内部,变成局部static变量。看下这种实现方式
    的头像 发表于 06-05 14:14 ?1824次阅读

    嵌入式C语言软件设计之装饰器模式(Decorator Pattern

    装饰器模式(Decorator Pattern),是结构型设计模式的一种,装饰器模式允许向一个现有的对象添加新的功能,而又不改变其对象结构,这种方式比使用子类继承的方式更加灵活。
    发表于 03-01 10:55 ?613次阅读

    Python实现模式的五种写法

    模式Singleton Pattern) 是一种常用的软件设计模式,该
    的头像 发表于 05-24 11:27 ?702次阅读

    php设计模式和应用场景

    ,从小型的网站到大型的企业级应用程序。 下面将介绍一些常见的PHP设计模式及其应用场景。 模式Singleton
    的头像 发表于 12-04 14:54 ?1317次阅读

    OpenHarmony鸿蒙开发学习:【Ability的启动模式

    Stage模型中,实现standard、singleton、specified多种模式场景。
    的头像 发表于 04-10 16:32 ?954次阅读
    OpenHarmony鸿蒙开发学习:【Ability的启动<b class='flag-5'>模式</b>】