重温设计模式.委托和事件

最近搞个小软件,重构了几次,越来越精简,但还是不能够满足自己的要求。分析下来,主要是没有设计过程,头脑想到了就做。
以前看过一遍“大话设计模式”,看的时候前面的还能理解,后面的就不好理解,主要是没有经验,以前看的时候也没有动手写代码。为了对一些常用的设计模式有点了解,也更便于日常的编码工作,所以决定重温设计模式,并一个个敲代码,可能也只搞些基本的模式,看完后,扔开书本敲代码。
声明,本人不是专业程序员,业余写程序而已。所以表述不专业,代码有错误,请谅解。欢迎提意见和交流。
由于以前只了解委托,事件也是在WinForm里面编程用到,自己并没有单独写过,个人认为委托和事件是比较重要,也是面向对象基础概念中比较难理解的一个。
所以第一次先温习下这个,并彻底搞清楚。
View Code
 1  using System;
 2  using System.Collections.Generic;
 3  using System.Linq;
 4  using System.Text;
 5 
 6  namespace DesignPattern
 7 {
 8      ///   <summary>
 9       ///  委托与事件学习-参考大话设计模式中的猫和老鼠的例子:
10       ///  1个猫 Tom,2只老鼠 Jerry和Jack,只要Tom喊一声,老鼠就会喊 快跑,猫来了
11       ///   </summary>
12      public  class DelegateExample
13     {
14          static  void Main( string[] args)
15         {
16             Cat cat =  new Cat( " Tom ");
17 
18             Mouse mouseJerry =  new Mouse( " Jerry ");
19             Mouse mouseJack =  new Mouse( " Jack ");
20          
21             cat.CatShout +=  new Cat.CatEventHander(mouseJack.Run);
22             cat.CatShout +=  new Cat.CatEventHander(mouseJerry.Run);
23             cat.Shout();
24             Console.Read();
25         }
26     }
27         
28      public  class Cat
29     {
30          ///   <summary>
31           ///  猫的名称
32           ///   </summary>
33          public  string Name {  getset; }
34 
35          public Cat( string name)
36         {
37              this.Name = name;
38         }
39          ///   <summary>
40           ///  猫说话
41           ///   </summary>
42          public  void Shout()
43         {
44             Console.WriteLine( " Hi ,我是{0} ",Name );
45              // 如果事件中有对象,则执行
46              if (CatShout !=  null) CatShout();
47         }
48          ///   <summary>
49           ///  声明一个"猫叫"的委托
50           ///   </summary>
51          public  delegate  void CatEventHander();
52          ///   <summary>
53           ///  声明一个猫叫的事件
54           ///   </summary>
55          public  event CatEventHander CatShout;
56     }
57      public  class Mouse
58     {
59           ///   <summary>
60           ///  老鼠的名称
61           ///   </summary>
62          public  string Name {  getset; }
63 
64          public Mouse( string name)
65         {
66              this.Name = name;
67         }
68          ///   <summary>
69           ///  老鼠跑的方法(猫来的时候,老鼠就跑)
70           ///   </summary>
71          public  void Run()
72         {
73             Console.WriteLine( " Hi,我是{0},快跑,猫来了.... ",Name );
74         }
75     }
76 }
备注,上述例子来源于“大话设计模式”最后的面向对象基础。

本博客还有大量的.NET开源技术文章,您可能感兴趣: 

1.开源Math.NET基础数学类库使用系列文章链接

2.开源C#彩票数据资料库系列文章链接

3.开源的.NET平台ORM组件文章:链接

4.其他开源的.NET组件文章:链接

5..NET平台机器学习组件-Infer.NET系列文章:链接

6.Matlab混合编程文章:链接 

你可能感兴趣的:(设计模式)