head first 设计模式学习随笔(5)----单件模式
2008-09-19 13:54
309 查看
单件模式:
显而易见,单件模式就是只有一个,并且通过私有构造器的方式不能被继承(继承了就不是正真意义上的单件了),在这一点上和静态类是一致的,但是还是有区别的主要是以下2点:
初始化时间,静态类在编译时初始化,单件类在需要时再初始化
静态类没有构造器,但是单件有一个一次性的构造器,可以根据不同情况进行一次性的复杂构造
当某个类并不需要由构造器初始化并且不在乎初始化的时间时,2者可以混用!
以下是单件模式的Demo:
1 public class Singleton
5
30
31 class Program
32 static void Main(string[] args)
34 Singleton sin = Singleton.GetSingleton("王老五",55);
36 //第二次无效了
37 Singleton sin2 = Singleton.GetSingleton("比尔 盖兹",45);
38
39 if (sin.Equals(sin2))
40 Console.WriteLine("我们两个是相同的实例!");
41 else
42 Console.WriteLine("我们两个是不相同的实例!");
43
44 sin.ShowInfo();
45 sin2.ShowInfo();
46 Console.Read();
47 }
48 }
显而易见,单件模式就是只有一个,并且通过私有构造器的方式不能被继承(继承了就不是正真意义上的单件了),在这一点上和静态类是一致的,但是还是有区别的主要是以下2点:
初始化时间,静态类在编译时初始化,单件类在需要时再初始化
静态类没有构造器,但是单件有一个一次性的构造器,可以根据不同情况进行一次性的复杂构造
当某个类并不需要由构造器初始化并且不在乎初始化的时间时,2者可以混用!
以下是单件模式的Demo:
1 public class Singleton
5
30
31 class Program
32 static void Main(string[] args)
34 Singleton sin = Singleton.GetSingleton("王老五",55);
36 //第二次无效了
37 Singleton sin2 = Singleton.GetSingleton("比尔 盖兹",45);
38
39 if (sin.Equals(sin2))
40 Console.WriteLine("我们两个是相同的实例!");
41 else
42 Console.WriteLine("我们两个是不相同的实例!");
43
44 sin.ShowInfo();
45 sin2.ShowInfo();
46 Console.Read();
47 }
48 }
相关文章推荐
- head first 设计模式学习随笔(2)----观察者模式
- head first 设计模式学习随笔(9)---迭代器模式
- head first 设计模式学习随笔(10)----组合模式
- 学习head first 设计模式之单件模式
- head first 设计模式学习随笔(4)----抽象工厂模式
- head first 设计模式学习随笔(1)----策略模式
- head first 设计模式学习随笔(8)----模板模式
- head first 设计模式学习随笔(11)----状态模式
- head first 设计模式学习随笔(3)----装饰者模式
- Head First 设计模式学习笔记 —— 单件模式
- head first 设计模式学习随笔(6)----命令模式
- head first 设计模式学习随笔(12)----代理模式
- head first 设计模式学习随笔(7)----适配器模式和外观模式
- Head First 设计模式(五)单件模式
- 《Head First 设计模式》学习笔记:装饰者模式
- (Head First 设计模式)学习笔记(3) --装饰者模式(StarBuzz咖啡店实例)
- 2.面向对象设计模式学习之Singleton单件模式
- 《head first 设计模式》学习心得(一)
- 设计模式学习---单件模式
- Head First--设计模式 单件模式 独一无二的对象