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

设计模式--单例模式

时间:2023-11-23 13:32:49浏览次数:25  
标签:文件 SingleObject getInstance -- 一个 实例 单例 设计模式


为了保证关键类只有一个对象,不允许用户自己构建此类对象。用户可以直接访问。

设计模式--单例模式_单一职责原则

意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

主要解决:一个全局使用的类频繁地创建与销毁。

何时使用:当您想控制实例数目,节省系统资源的时候。

如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。

关键代码:构造函数是私有的。

应用实例:

  • 1、一个班级只有一个班主任。
  • 2、Windows 是多进程多线程的,在操作一个文件的时候,就不可避免地出现多个进程或线程同时操作一个文件的现象,所以所有文件的处理必须通过唯一的实例来进行。
  • 3、一些设备管理器常常设计为单例模式,比如一个电脑有两台打印机,在输出的时候就要处理不能两台打印机打印同一个文件。

优点:

  • 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例(比如管理学院首页页面缓存)。
  • 2、避免对资源的多重占用(比如写文件操作)。

缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。

int main(){
    SingleObject so = SingleObject::getInstance();
    so.showMessage();
    return 0;
}

//静态初始化

class SingleObject {    
private:
    SingleObject(){}
    static SingleObject instance;
public:
    static SingleObject getInstance() {
        return instance;
    }
    void showMessage(){
        cout<< "Hello World !" <<endl;
    }
};


标签:文件,SingleObject,getInstance,--,一个,实例,单例,设计模式
From: https://blog.51cto.com/u_13911803/8528064

相关文章

  • 使用Poco库编写一个采集阿里云信息的程序
    ```cpp//引入Poco库#include<Poco/Net/HTTPClientSession.h>#include<Poco/Net/HTTPRequest.h>#include<Poco/Net/HTTPResponse.h>#include<Poco/URI.h>//创建HTTP客户端会话对象Poco::Net::HTTPClientSessionsession("www.aliyun.com",......
  • 无涯教程-Tk - 基本组件
    基本窗口小部件是几乎所有Tk应用程序中可用的常见窗口小部件。可用的基本小部件列表如下:Sr.No.Widgets&Remark1Label用于显示单行文本的小部件。2Button可单击并触发动作的小部件。3Entry小部件过去接受单行文本作为输入。4Message用于显示多行文本的小部件......
  • 用R库编写的钉钉图片采集程序
    ```R#安装httpRequest库install.packages("httpRequest")#导入httpRequest库library(httpRequest)#设置代理服务器信息proxy_host<-"xxx.xxx.xxx"proxy_port<-8000#设置要抓取的网址url<-"https://www.dingtalk.com/"#使用httpGet函数发送......
  • 大型企业税务管理数智化转型势在必行
    税收在国家治理中的基础性、支柱性、保障性作用进一步充分发挥,在高质量推进新发展阶段税收现代化进程中向前迈进了一大步。在国家全面推进高质量发展、推动数字经济发展的大背景下,无论是政府还是产业或企业,都在尝试运用数智化技术、数智化思维和数智化转型方法,撬动并赋能生产方式和......
  • 企业电子会计档案信息化建设势在必行
    2023年10月底北京、安徽、山东、湖南、贵州、宁夏、青海7地税务局相继发布《关于开展全面数字化的电子发票试点工作的公告》,从11月1日起开展数电票试点工作。至此全国已有33个行政区域进行数电票试点,数电票进入快速普级推广阶段。随着数电票在企业日常经营过程中的应用普级,如何合规......
  • ESMapV结合BIM、GIS、三维建模、IOT实现数字孪生智慧桥梁、挠度监测、沉降监测、桥梁B
    前言传统桥梁管养模式陈旧,仍存在数据分散难归口、管养时间人力成本高、病害危情信息异步等弊端现象,潜在安全隐患俨然成为桥梁防护的一颗不定时炸弹。随物联网、信息化、数字孪生技术成熟发展,以三维数字镜像桥梁为孪生底座,打造全息感知预警为先、及时干预处置为主,复盘总结为后的精......
  • 大规模神经网络优化:神经网络损失空间“长”什么样?
    前言 如何刻画网络的优化性质呢?在优化相关的论文中,通常通过分析Hessian矩阵及其特征值,或者将损失函数进行一维或二维的可视化来分析网络的优化性质。我们希望这些指标能够帮助我们更好的理解网络损失的landscape,优化器优化轨迹的性质等等。我们希望将这些指标刻画的性质与优化......
  • Scrum 冲刺 6
    这个作业属于哪个课程软件工程这个作业要求在哪里团队作业4——项目冲刺这个作业的目标记录昨日已完成工作,明确今日工作,总结项目进度敏捷冲刺日志集合项目冲刺集合贴站立会议会议照片因每个人不单有软工项目,在线下时间上凑齐所有人较为困难,所以我们采用微信......
  • 点分治
    点分治是一种在树上进行的分治,可以方便的求解树上路径等问题。例题:P3806【模板】点分治1给定一棵树,询问树上是否存在长度为k的路径。现在我们假设x为根节点,那么一条路径长度为k有两种情况,一种是经过x,一种不经过x,第一种的两个端点在两个不同子树中,第二种的两个端点在同一......
  • PE权威指南学习笔记
    目录GitHubPE权威指南随书源码WinHexPE权威指南学习笔记:GitHubPE权威指南全书翻译为MD,方便做笔记和检索随书源码分为C和ASM版,已做注释ASMCWinHex对PE文件进行标注......