class Program
{
static void Main(string[] args)
{
普通实例化对象
Auto auto = new Auto("别克");
Auto auto = new Auto("大众");
单例模式
AutoClass auto = AutoClass.GetAuto();
auto.Run();
Auto.GetAuto();
//单例模式-练习
Hero hero=Hero.GetHero();
Console.ReadKey();
}
}
class Hero
{
private static Hero hero;
private Hero() { }
public static Hero GetHero() {
if (hero==null)
{
hero = new Hero();
}
return hero;
}
}
class Auto
{
private string name;
//public Auto(string _name) {
// name = _name;
//}
private static Auto auto;//第一 :声明自己类型的模板,用来保存自身的实例化对象 静态的
private static readonly object obj = new object();
//私有构造函数
private Auto() {}
public static Auto GetAuto()
{//第二:利用一个静态方法对外部返回自身的实例对象 new一次 只能实例化一次
if (auto == null)//判断自身的实例化对象是否为空,为空就实例化自身
{
auto = new Auto();
}
//否则就返回一实例化的自身 只能实例化一次;
return autoClass;
}
//双重加锁
public static Auto GetAuto() {
if (auto == null)
{
lock(obj){
if (auto == null)
{
auto = new Auto();
}
}
}
return auto;
}
private static Auto auto;
private Auto()
{
}
public static Auto GetAuto()
{
if (auto == null)
{
auto = new Auto();
}
return auto;
}
}