标签:系统错误 传递 防止 支持 私有 img turn str line
单例模式(singleton)简介:
单例模式保证一个类仅有一个实例,并提供一个访问它的全局访问点。使用单例模式能够让设计师快速获取提供某项服务或者功能的对象,可以省去层层传递对象的困扰。
单例模式在实现时,需要编程语言的支持,需要编程语言具有静态类属性、静态类方法以及可重新定义构造函数的访问修饰符,具有这3项语句功能的编程语言就可以实现单例模式。
Singleton单例类:
public class Singleton
{
private static Singleton _instance;
private Singleton() { }
public static Singleton Instance {
get {
if (_instance == null) {
_instance = new Singleton();
}
return _instance;
}
}
}
其中静态类方法Instance用来获取_instance属性,上方代码使用了C#的getter存取运算符功能来实现Instance方法,使Singleton.Instance()的调用方式,写为Singleton.Instance的方式,减少的一对括号对于后续代码维护有着一定程度的帮助。
客户端测试代码:
static void Main(string[] args)
{
Singleton s1 = Singleton.Instance;
Singleton s2 = Singleton.Instance;
if (s1 == s2 ) {
Console.WriteLine("The only one Singleton instance .");
}
Console.ReadKey();
}
或者直接使用方法方式获取:
public class Singleton
{
private static Singleton _instance;
private Singleton() { }
public static Singleton GetInstance()
{
if (_instance == null)
{
_instance = new Singleton();
}
return _instance;
}
}
//使用时:
//Singleton s = Singleton.GetInstance();
优点:
单例模式通过将类的构造方法私有化,让类对象只能够在类的成员方法中产生,配合类的静态成员属性在类中只会出现一个的限制,让系统可以有效的限制数量,因此,单例模式可以有效的限制类对象产生的地点和时间,同时也可以防止类对象被随意产生而造成系统错误。
缺点:
单例模式使用方便,但是在挑选适合以单例模式实现的类时,需要认真挑选,不能够滥用单例;其次,单例模式违反了“开闭原则”,因为通过Instance方法获取的对象是“实现类”不是“接口类”,该方法返回的对象是包含了实现细节的实体类,当后续设计变更后者需求改变时,程序员无法将它替代为其他类,只能改变实现类中原有的程序代码,无法满足“对修改关闭”的要求。
标签:系统错误 传递 防止 支持 私有 img turn str line
原文地址:https://www.cnblogs.com/sylvan/p/9064150.html