静态类+单例模式

devtools/2024/9/25 15:19:55/
静态类
静态类的定义

在声明类的时候加上static修饰的类为静态类。

1.静态类只允许有静态成员(静态方法,静态字段,静态属性)。

2.静态类不能实例化。

3.静态类中的方法是通过类名来调用。

静态类使用事项

静态类在项目中,资源是共享的。

静态类在程序结束时释放资源。(静态类和程序同生共死)

所以静态类在项目中应该越少越好。(单例设计模式)

使用静态类的原因

静态类不能实例化对象,若想要将你的类当成一个“工具类”去使用,可以考虑将类写成静态类:

例如:Console.WriteLine("");

静态类的声明
static class 类名{static 字段;static 属性;static 方法;
}

调用静态类的成员:类名.静态成员

静态与非静态区别

静态成员

类名调用 /静态类中只能有静态成员 /静态方法中只能调用静态成员

非静态成员

对象名调用 /非静态类中可以有静态成员 /非静态方法中可以调用静态成员

单例模式

为了既发挥静态资源共享的优点,又避免静态一直霸占资源的缺点,所以出现了单例模式。

使用唯一一个静态变量来索引堆中的内容。

1.不允许别人去实例化出其他实例个体(封闭构造函数)。

2.为了别人方便索引,而且只能访问,使用属性的get方法去封装这个变量。

3.在外人访问的时候,得先判断一下,这个静态变量存储的地址是否为空。

4.如果为空,就要去堆中开辟空间(使用new构造函数()创建一个新对象)。

5.如果不为空就可以直接返回。

6.这样,该类中其他非静态的成员,就可以通过这唯一一个静态变量去索引(用dot语法)

该系列专栏为网课课程笔记,仅用于学习参考。 


http://www.ppmy.cn/devtools/94186.html

相关文章

浙大数据结构慕课课后题(06-图1 列出连通集)

题目要求: 给定一个有n个顶点和m条边的无向图,请用深度优先遍历(DFS)和广度优先遍历(BFS)分别列出其所有的连通集。假设顶点从 0 到n-1编号。进行搜索时,假设我们总是从编号最小的顶点出发&…

【产品经理】竞品分析怎么理解?拆解一下

什么叫竞品?(研究的对象) 竞品看你怎么理解,有时候不一定是你的竞争对手,有可能是其他行业也做了这个功能,那你也可以学习,有类似的功能或者策略都可以学习,不过这个可能在管理学上…

Tomcat文章目录

这是一个Tomcat相关文章的目录,汇总了我写过的Tomcat的所有文章,方便进行查找回顾 第一章:实现一个简单的Web容器 使用Socket编程实现一个简单的服务端程序,但是仅仅支持静态资源(html)的获取。 第二章&…

2024 年 7 月公链行业研报:市场波动中 Solana 表现抢眼,Layer 2 竞争白热化

作者:Stella L (stellafootprint.network) 数据来源:Footprint Analytics 公链 Research 页面 7 月份,加密货币市场表现活跃,波动幅度较大,这一现象映射了全球金融市场的整体趋势。现货以太坊 ETP 在美国的上市&…

proxy负载均衡

endpoint : 终点、终端 看service服务器的ip kubectl get ep backend -> real server :真正提供web服务的服务器 负载均衡器 load balancer --》LB USER -->LB --->BACKEND(real server) nginx SERVICE --->很多的endpoint--》po…

Trie树:定义与应用

Trie树,也称为字典树或前缀树,是一种专门用于快速检索字符串集合中元素的数据结构。它在许多应用中都有广泛的使用,特别是在自动补全、拼写检查、词典管理和前缀匹配等场景中。本文将详细介绍Trie树的定义、构建、应用以及操作,并…

四十、大数据技术之Kafka3.x(3)

🌻🌻 目录 一、Kafka Broker1.1 Kafka Broker工作流程1.1.1 Zookeeper 存储的Kafka信息1.1.2 Kafka Broker 总体工作流程1.1.3 Broker 重要参数 1.2 生产经验——节点服役和退役1.2.1 服役新节点1.2.2 退役旧节点 1.3 Kafka 副本1.3.1 副本基本信息1.3.2…

vue RSA加密解密(解决加密过长,解密过长返回为null的问题)

1安装 npm i jsencrypt2.rsa.js /* 引入jsencrypt实现数据RSA加密 */ import JSEncrypt from jsencrypt // 处理长文本数据时报错 jsencrypt.js Message too long for RSA /* 引入encryptlong实现数据RSA加密 */ //import Encrypt from encryptlong // encryptlong是基于jsen…