静态变量之单例模式

单例模式

我们从一个例题入手

请用静态成员相关知识实现

一个类对象,在整个应用程序的生命周期中,有且仅有一个该对象的存在,不能在外部实例化,直接通过该类类名就能够得到唯一的对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace 语法知识
{
class Test{
private static Test t=new Test();
public int testInt =10;
public static Test T
{
get{
return t;
}
}
private Test();
}
internal class Program
{
static void Main(string[] args){
Console.WriteLine(Test.T.testInt);
}
}
}

这个程序非常有意思,这个就是单例模式的一个比较简单的形式了。

我们先定义一个私有的构造无参函数,让它能够做到不能在外部实例化;接着,我们在类里面定义一个静态成员t,这个静态成员就是一个Test类了,并且是唯一的。

注意!!此时虽然t不能在外部被赋值了

1
2
Test.t=new Test();
//报错,私有不能实例化

但是,还是可以被赋值为空的!!!!

1
2
Test.t=null;
//不会报错,并且这个时候t就丢失了

因此,我们还需要做到能够得到却不能被改变,因此可以想到成员属性的用法(get)

我们通过成员属性,对t实现了保护,之后,只要通过属性,就可以实现Test.T呼出一个唯一的静态成员类t了。此时Test.T.testInt=10.

这个可以好好看看,真的很有意思!


静态变量之单例模式
https://gaster44.github.io/2023/12/21/静态变量之单例模式/
作者
huangjinhong
发布于
2023年12月21日
许可协议