本篇文章主要采用理论和代码实例相结合方式来论述委托和事件,涉及到一些边界技术,如软件架构的OCP原则(开-闭原则),

软件架构解耦,设计模式(Sender-Order)和事件驱动模型,有一定难度和深度,不适合初级者。

第一部份   委托

关于委托内容,主要围绕下图来论述。

C# 委托和事件高级进阶

 一   委托是什么(what)

(一)委托产生的背景之一

1.我们先来假设这样一个情景需求:

   设计一个系统,使其满足如下条件:

   (1)当前,只有中国人和英国人使用该系统;

   (2)向系统输入用户名和相应的语言,将产生相应语言的问候语;

      C# 委托和事件高级进阶

  (3)后期,可能会有其他国家语言加入该系统(系统变化的部分) ;

 2.技术方案实现

关于技术方案实现,我们可以采用下图中的三种方式之一。

为了更好地叙述委托,我们分别实现三种技术方案,并找出它们的关系。

C# 委托和事件高级进阶

 2.1 一般实现

Code(控制台程序)

 1 using System;
 2 
 3 namespace DelegateDemo
 4 {
 5     class Program
 6     {
 7         static void Main(string[] args)
 8         {
 9             Console.WriteLine(GetGreetingContens("小王", "Chinese"));
10             Console.WriteLine(GetGreetingContens("Alan_beijing", "English"));
11             Console.WriteLine(GetGreetingContens("Linda", "Russian"));
12             Console.Read();
13         }
14 
15         //根据用户名和语言,获取问候语
16         public static string GetGreetingContens(string UserName, string Language)
17         {
18             //New 一个GreetToUsers对象
19             GreetToUsers greetToUsers = new GreetToUsers();
20             //当然,你也可以使用switch开发语句来代替如下的if......else......
21             if (Language == "Chinese")
22             {
23                 return greetToUsers.ChinesePeople(UserName);
24             }
25             else if (Language == "English")
26             {
27                 return greetToUsers.EnglishPeople(UserName);
28             }
29             else
30             {
31                 return "抱歉,当前系统只支持汉语与英语(Sorry, the current system only supports Chinese and English.)";
32             }
33         }
34     }
35 
36 
37 
38     //定义基本问候类和方法
39     public class GreetToUsers
40     {
41         //Chinese People
42         public string ChinesePeople(string UserName)
43         {
44             string GreetContents = "您好!" + UserName;
45             return GreetContents;
46         }
47 
48         //English People
49         public string EnglishPeople(string UserName)
50         {
51             string GreetContents = "Hello," + UserName + "!";
52             return GreetContents;
53         }
54     }
55 
56 }
View Code

相关文章: