文章目录
- 单例模式的概述
- 为什么会有单例模式
- 如何创建单例模式
-
- [1、首先要保证,该对象 有且仅有一个](#1、首先要保证,该对象 有且仅有一个)
- 2、其次,需要让外部能够获取到这个对象
- 示例
-
- [通过 属性 获取单例](#通过 属性 获取单例)
单例模式的概述
总结来说:
单例 就是只有 一个 实例对象。
模式 说的是设计模式,这是众多编程大佬、前辈们在实践过程中为了使程序更加的优美、执行效率更高等等等(具体参考 设计模式的六大原则)而创立出来的一些常用的解决方法(解决思路)。
为什么会有单例模式
程序或是软件是对现实生活中的一种抽象。
在现实生活中,可能会出现同一时间 只需要 一个对象执行某种行为,例如:操作系统中只存在一个任务管理器,一个国家只需要一个最高领导人等等......
如何创建单例模式
1、首先要保证,该对象 有且仅有一个
对象的创建是通过 构造器,并在外部 new出来的;
C#中,会默认存在一个无参构造函数;
因此,需要将无参构造函数声明为【private】私有的,让外部无法访问,只在内部进行创建。
2、其次,需要让外部能够获取到这个对象
对象没有创建,就无法引用到内部的参数或者方法;
将方法、属性、变量声明为静态类型,就可以不需要创建对象,从而在外部获取;
因此需要引用【static】关键字,来声明获取唯一实例对象的方法或者属性。
示例
通过 属性 获取单例
C#
class Single
{
//私有变量阻止外部获取
//静态方法、属性中只能引用静态成员
private static Single instance;
//私有化无参构造函数,让外部无法创建
private Single() { }
//公开静态属性,用于外部获取
public static Single Instance
{
get
{
if( instance == null)
{
instance = new Single();
}
//返回实例对象
return instance;
}
}
public void Speak()
{
Console.WriteLine("我是一个属性获取的单例");
}
}
class Program
{
static void Main(string[] args)
{
//通过属性获取单例
Single.Instance.Speak();
Console.ReadLine();
}
}
运行结果: