首页 > 其他分享 >单例模式-07

单例模式-07

时间:2023-06-18 21:55:10浏览次数:30  
标签:Singleton 07 private instance 实例 static 模式 单例

概述

单例模式 (Singleton Pattern) 又称单件模式、单态模式。确保一个类只能有一个实例,同时保证该类的实例只能在类内部创建,提供给整个系统使用。

优点:节约系统资源,提高系统性能。
缺点:扩展困难,一定程度上违反了“单一职责原则”。

class Singleton {
  private static Singleton instance = null;
  
  private Singleton() {}
  
  public static Singleton getInstance() {
    if (instance == null) {
      instance = new Singleton();
    }
    return instance;
  }
}

图示:
image

分类:单例模式分为饿汉式和懒汉式。饿汉式是在类加载时就创建了类实例,而懒汉式是在需要类实例时才创建类实例。

// 饿汉式,懒汉式见上一段代码
class Singleton {
  private static Singleton s = new Singleton();
  
  private Singleton() {}
  
  public static Singleton getInstance() {
    return s;
  }
}

参考

[1]. 刘伟, 设计模式. 2011.

标签:Singleton,07,private,instance,实例,static,模式,单例
From: https://www.cnblogs.com/xdreamc/p/16460871.html

相关文章

  • 原型模式-06
    概述原型模式(prototypepattern)是将某个类实例作为原型,对这个原型进行复制得到相同类型的多个实例。优点:当需要创建的类型比较复杂时,使用原型模式可以简化创建过程。缺点:每个类都需要有一个克隆方法,对于深复制比较复杂。Java中,实现Cloneable接口可以使用clone()方法......
  • 2023跟我一起学设计模式:抽象工厂模式( Abstract Factory)
    抽象工厂模式(AbstractFactory)意图抽象工厂模式是一种创建型设计模式,它能创建一系列相关的对象,而无需指定其具体类。问题假设你正在开发一款家具商店模拟器。你的代码中包括一些类,用于表示:一系列相关产品,例如椅子Chair、沙发Sofa和咖啡桌Coffee­Table。系列产品的不......
  • React - 07 类组件的渲染逻辑
    1.ES6类的知识ES6类的继承2.创建类组件创建类组件创建一个构造函数(类)+要求必须继承React.Component/PureComponent这个类+我们习惯于使用ES6中的class创建类「因为方便」+必须给当前类设置一个render的方法「放在其原型上」:在render方法中,返回需要渲染的......
  • 2023跟我一起学设计模式:Golang 抽象工厂模式讲解和代码示例
    Golang抽象工厂模式讲解和代码示例抽象工厂是一种创建型设计模式,它能创建一系列相关的对象,而无需指定其具体类。抽象工厂定义了用于创建不同产品的接口,但将实际的创建工作留给了具体工厂类。每个工厂类型都对应一个特定的产品变体。在创建产品时,客户端代码调用的是工厂对象的......
  • Python编程和数据科学中的大数据分析:如何从大量数据中提取有意义的信息和模式
    目录《Python编程和数据科学中的大数据分析:如何从大量数据中提取有意义的信息和模式》引言大数据时代已经来临,随着互联网和物联网的普及,海量数据的产生和存储已经成为一种普遍的现象。这些数据包含各种各样的信息,如文本、图像、音频和视频等,而大数据分析则是将这些海量数据中提......
  • log4cxx的使用模式
    log4cxx的使用模式(金庆的专栏)==初始化配置==Main.cpp中初始化配置.如果不需要监视配置文件并自动重新配置,就不需要调用configureAndWatch().执行目录下的log4j.properties是会自动读取的。#include<log4cxx/propertyconfigurator.h>intma......
  • WPF入门教程系列二十八 ——DataGrid使用示例MVVM模式(6)
    WPF入门教程系列目录WPF入门教程系列二——Application介绍WPF入门教程系列三——Application介绍(续)WPF入门教程系列四——Dispatcher介绍WPF入门教程系列五——Window介绍WPF入门教程系列十一——依赖属性(一)WPF入门教程系列十五——WPF中的数据绑定(一)   八......
  • 关于 SAP Commerce Cloud UI 的混合部署模式
    所谓混合部署模式,意思是CommerceCloudStorefront部分UI通过Spartacusserve,剩下的仍然通过传统的Accelerator来serve.例子:http://localhost:4200/electronics-spa/en/USD/Open-Catalogue/Cameras/Digital-Cameras/c/575通过Spartacus实现http://localhost:4200......
  • 策略模式
    行为型:策略模式定义     定义一系列的算法,将他们一个个封装起来,使他们直接可以相互替换。   算法:就是写的逻辑可以是你任何一个功能函数的逻辑封装:就是把某一功能点对应的逻辑给抽出来可替换:建立在封装的基础上,这些独立的算法可以很方便的替换 通俗的理......
  • 07. centos使用yum方式安装redis
    一、在CentOS和RedHat系统中,首先添加EPEL仓库,然后更新yum源:sudoyuminstallepel-releasesudoyumupdate(可不更新)二、然后安装Redis数据库:sudoyum-yinstallredis安装好后启动Redis服务即可:sudosystemctlstartredis这里同样可以使用redis-cli进入Redis命令行......