【C#系列】浅谈委托和委托

【C#系列】浅谈委托和委托

本篇文章更适合具有一定开发经验,一定功底,且对底层代码有所研究的朋友!!!

 

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

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

第一部份   委托

关于委托内容,大致为围绕下图来论述。

【C#系列】浅谈委托和委托

 

一   委托是什么(what)

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

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

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

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

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

      

【C#系列】浅谈委托和委托

(3)后期,可能会有其他国家使用该功能 ;

 2.技术方案实现

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

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

【C#系列】浅谈委托和委托

 2.1 一般实现

Code(控制台程序)

【C#系列】浅谈委托和委托

【C#系列】浅谈委托和委托

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 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zysgdp.html