原文链接:http://www.manew.com/thread-99654-1-1.html
单例模式特点:
1、单例类必须自己创建自己的唯一实例并且只有一个实例
2、必须拥有一个私有的构造函数(防止在别的类中new出一个新的类对象)
3、必须声明一个静态的私有的(类)类型的变量
4、必须有个公有的静态的方法(给所有对象提供这一实例)(判断系统是否已经有了这个单例,如果有则返回,没有则创建)
代码部分:
namespace Temp
{[/size]
[size=4]//步骤一[/size]
[size=4]Class Singleton
{[/size]
[size=4] /******************************************************/
//定义一个私有静态变量
[color=#4169e1] private static Singleton single;[/color]
//定义一个私有构造
[color=#4169e1] private Singleton() { } [/color]
//在方法中实现类的实例化
[color=#4169e1] public static Singleton Sing()
{ [/color]
//判断Single是否有值(如果没有New一个返回出去,如果有直接返回)
[color=#4169e1] if (single == null)
{
single = new Singleton();
}
return single;
}[/color]
/******************************************************/
//普通方法
public void Add(int a, int b)
{
Console.WriteLine("a + b = " +( a + b));
}
}
[/size][size=4]//步骤二:[/size][size=4]
Class Program
{
static void Main(string[] args)
{[/size]
[size=4] //调用单例的对象
Singleton sin = Singleton.Sing();[/size]
[size=4] //利用声明的单例对象调用方法
sin.Add(1,2);
}
}
}
优点: 1、在内存里只有一个实例,减少了内存的开销,尤其是频繁的创建和销毁实例。 2、避免对资源的多重占用(比如写文件操作)。
缺点:没有接口,不能继承,与单一职责原则冲突,一个类应该只关心内部逻辑,而不关心外面怎么样来实例化。
具体什么时候使用单例,完全看个人需求。
以上纯粹是个人的对单例模式的一些理解,作为新鸟可能会有写的不对的地方,如果有不对的地方或不理解的地方,你们回帖,本人会尽量修正。
希望对一些不了解单例模式的人有一些帮助。