设计模式-单例模式(Singleton Pattern)
来源:互联网 发布:受限的网络连接 编辑:程序博客网 时间:2024/05/01 08:05
单例模式的特点:
单例类只能有一个实例
单例类必须自己创建自己唯一的实例
单例类必须给所有其他对象提供这一实例
单例模式(Singleton Pattern )中只包含一个角色(Singleton),该角色拥有一个私有构造函数,确保
用户无法通过构造函数(new)去直接实例化。此外单例模式包含一个静态私有变量_Instance 以及静态共有方法CreateInstance().
CreateInstance方法负责检查并实例化自己,然后存储在静态变量_Instance 中,该过程中确保只有一个实力被创建。
代码:
public class Singleton
{
private static Singleton _Instance = null;
/// <summary>
/// 避免构造函数产生一个实例
/// </summary>
private Singleton() { }
public static Singleton CreateInstance()
{
if(_Instance==null)
{
_Instance = new Singleton();
}
return _Instance;
}
public void Operate()
{
Console.WriteLine("this is the Operate method of Singleton");
}
class Program
{
static void Main(string[] args)
{
#region 单例模式
Singleton instance = Singleton.CreateInstance();
instance.Operate();
return;
#endregion
}
}
此外,考虑到单例模式可能会有多线程调用,采用以下方式。代码如下:
public class Singleton2
{
private static readonly Singleton2 _Instance = new Singleton2();
/// <summary>
/// 避免构造函数产生一个实例
/// </summary>
private Singleton2() { }
public static Singleton2 CreateInstance()
{
return _Instance;
}
public void Operate()
{
Console.WriteLine("this is the Operate method of Singleton2");
}
}
- 设计模式 - Singleton Pattern(单例模式)
- 设计模式 - Singleton Pattern(单例模式)
- 设计模式-单例模式(Singleton Pattern)
- 设计模式 -- 单例模式 Singleton Pattern
- 设计模式-单例模式(singleton pattern)
- 设计模式--单例模式【Singleton Pattern】
- 设计模式 单例模式(Singleton Pattern)
- 【设计模式】Singleton Pattern 单例模式
- 设计模式--单例模式(Singleton Pattern)
- 设计模式【单例模式Singleton Pattern】
- 设计模式(design pattern)-单例模式(singleton pattern)
- 设计模式---单例设计模式(Singleton Pattern)
- 设计模式之单模式 Singleton pattern
- 设计模式-单件模式(Singleton Pattern)
- Delphi设计模式之单例模式(Singleton Pattern)
- AS3设计模式之一:单例模式(Singleton Pattern)
- 设计模式4:Singleton Pattern (单例模式)
- 乐在其中设计模式(C#) - 单例模式(Singleton Pattern)
- hdu3460
- 修改nautilus快捷键
- 错误日志
- Oracle 物化视图 详细错误描述 查看方法
- SQL
- 设计模式-单例模式(Singleton Pattern)
- 隐藏和显示div的两种方法(display和visibility)
- android两种方式设置EditText不弹出软键盘
- 【动态规划】田忌赛马
- 在两个CListctrl之间拖动数据的一段代码
- 3.3.5 复制对象句柄
- 视频播放器的基本原理
- 操作系统学习笔记——保护模式——分段机制
- Activity的taskAffinity属性