单例模式:一个类只能创建一个该类的对象(实例)
1.实现步骤(以类A为例)
-
不能创建类的任何一个实例
private A () {} -
只能创建类A的一个实例(类的静态成员是被类的各个对象所共享的)
public static A Instance = new A(); -
在第一次访问类A的唯一实例时创建该实例
private static A instance; //new A();
public static A Instance()
{
if (instance == null)
{
instance = new A();
}
return instance ;
}
using System;
namespace 面向对象_单件模式
{
class A
{
private A()//私有 不能创建类
{
Random rnd = new Random();
n = rnd.Next(0, 9999);
}
public int n;
public static A instance;
public static A Foo() //创建实例 公共来创建对象
{
if (instance == null)
{
instance = new A();
}
return instance;
}
public void SayHello()
{
Console.WriteLine(n);
}
}
class Program
{
static void Main(string[] args)
{
A a1 = A.Foo();
A a2 = A.Foo();
A a3 = A.Foo();
A a4 = A.Foo();
a1.SayHello();
a2.SayHello();
a3.SayHello();
a4.SayHello();
Console.ReadLine();
}
}
}