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

    文章

    755

    浏览量

    45332
  • 编译器
    +关注

    关注

    1

    文章

    1602

    浏览量

    48918
收藏 人收藏

    评论

    相关推荐

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

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

    OpenHarmony中的模式实践

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

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

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

    设计模式在网管系统中的设计与实现

    将设计模式引入网管系统可以减少管理系统设计的复杂度,提高系统的开发效率。在分析设计模式中的Singleton模式、Adapter模式、Obs
    发表于 03-04 22:20 14次下载

    关于iOS开发单使用问题

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

    模式详解

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

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

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

    Land Pattern and Solder Stencil

    Land Pattern and Solder Stencil
    发表于 02-19 11:47 7次下载
    Land <b class='flag-5'>Pattern</b> and Solder Stencil

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

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

    Controller并发安全的解决办法

    模式Singleton)是程序设计中一种非常重要的设计模式,设计模式也是Java面试重点考
    的头像 发表于 06-15 17:10 1575次阅读

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

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

    Python实现模式的五种写法

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

    一文详解UVM设计模式

    本篇是对UVM设计模式 ( 二 ) 参数化类、静态变量/方法/类、模式、UVM_ROOT、工厂模式
    的头像 发表于 08-06 10:38 1406次阅读
    一文详解UVM设计<b class='flag-5'>模式</b>

    php设计模式和应用场景

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

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

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