滑板小猪的博客资料

本文主要介绍滑板小猪的博客资料 方法和在新技术下所面对的“挑战”,方便大家深入理解滑板小猪的博客资料 过程。本文也将分享滑板小猪的博客资料 所遇到的问题和应对策略,怎么解决怎么做的问题。
通过深入本文可以理解代码原理,进行代码文档的下载,也可以查看相应 Demo 部署效果。

1、业务背景

技术为业务而生,我们探讨某一个技术带来的价值时,都有一定的业务背景作为前提。

我们先来看如下需求背景:

定义一个学生类,属性包含学生姓名、学号、年龄、创建时间,行为包含学生可以使用正确的方式对不同国家的人打招呼,如对中国人打招呼为:张三,你好!对美国人打招呼为Jack  hello!

2、解决方式1

示例代码及调用方式

 1     public class Student  2     {  4         public enum PeopleType  5         {  6             Chinese = 1,  7             American = 2  8         }  9  10         public string StuName { get; set; } 11  12         public string StuNum { get; set; } 13  14         public int Age { get; set; } 15  16         public DateTime CreateTime { get; set; } 17  18         /// <summary> 19         /// 对不同国家的人说hello,每个国家的表达方式不一样 20         /// </summary> 21         /// <param name="name"></param> 22         /// <param name="peopleType"></param> 23         public void SayHello(string name, PeopleType peopleType) { 24  25             Console.WriteLine($"{this.StuName }开始打招呼"); 26  27             switch (peopleType) 28             { 29                 case PeopleType.Chinese: 30                     Console.WriteLine($"{name},你好!"); 31                     break; 32                 case PeopleType.American: 33                     Console.WriteLine($"{name},hello"); 34                     break; 35                 default: 36                     throw new Exception("enum  PeopleType exception"); 37             } 38         } 39     }

 1             {  2                 Student student = new Student() {  3                     StuName = "wjl",  4                     StuNum = "14216600010",  5                     Age = 18,  6                     CreateTime = DateTime.Now  7                 };  8                 student.SayHello("张三", PeopleType.Chinese);  9                 student.SayHello("jack", PeopleType.American); 10             }

该种方式的优缺点

假如要增加一个类型的国家马来西亚,就得修改方法,增加一个分支,任意分支变化 都得修改方法,经常改动,很不稳定,难以维护。

但这种方式增加公共逻辑方便,如:Console.WriteLine($”{this.StuName }开始打招呼”);

3、解决方式2

示例代码及调用方式

 1     public class Student  2     {  4         public enum PeopleType  5         {  6             Chinese = 1,  7             American = 2  8         }  9  10         public string StuName { get; set; } 11  12         public string StuNum { get; set; } 13  14         public int Age { get; set; } 15  16         public DateTime CreateTime { get; set; } 17  18         /// <summary> 19         /// 对中国人说你好 20         /// </summary> 21         /// <param name="name"></param> 22         public void SayHelloChinese(string name) 23         { 24             Console.WriteLine($"{this.StuName }开始打招呼"); 25             Console.WriteLine($"{name},你好!"); 26         } 27  28         /// <summary> 29         /// 对美国人说你好 30         /// </summary> 31         /// <param name="name"></param> 32         public void SayHelloAmerican(string name) 33         { 34             Console.WriteLine($"{this.StuName }开始打招呼"); 35             Console.WriteLine($"{name},hello"); 36         } 37     }

 1             {  2                 Console.WriteLine("调用说你好的功能,方式2");  3                 Student student = new Student()  4                 {  5                     StuName = "wjl",  6                     StuNum = "14216600010",  7                     Age = 18,  8                     CreateTime = DateTime.Now  9                 }; 10                 student.SayHelloChinese("张三"); 11                 student.SayHelloAmerican("jack"); 12             }

该种方式的优缺点

增加分支(如对马来西亚人打招呼),就要增加方法,不影响别的方法,修改某个方法,不影响别的方法,增加公共逻辑会导致多个方法有很多重复代码,不利于代码复用,甚至如果要修改这些公共逻辑,需要修改的地方较多,不利于维护。

4、解决方式3

示例代码及调用方式

 1     public class Student  2     {  3         public delegate void SayHelloDelegate(string name);  4   5         public enum PeopleType  6         {  7             Chinese = 1,  8             American = 2  9         } 10  11         public string StuName { get; set; } 12  13         public string StuNum { get; set; } 14  15         public int Age { get; set; } 16  17         public DateTime CreateTime { get; set; } 18  19         public void SayHelloPerfect(string name, SayHelloDelegate sayHello ) { 20  21             Console.WriteLine($"{this.StuName }开始打招呼"); 22             sayHello.Invoke(name); 23         } 24     }

 1             {  2                 Student student = new Student()  3                 {  4                     StuName = "wjl",  5                     StuNum = "14216600010",  6                     Age = 18,  7                     CreateTime = DateTime.Now  8                 };  9                 SayHelloDelegate method1 = student.SayHelloChinese; 10                 student.SayHelloPerfect("张三", method1);  13                 SayHelloDelegate method2 = student.SayHelloAmerican; 14                 student.SayHelloPerfect("Jack", method2); 15             }    

该种方式的优缺点

将逻辑作为参数传递,既增加公共逻辑方便,又逻辑分离维护简单,鱼肉熊掌兼得。自上往下,逻辑解耦,方便维护升级;自下往上,代码重用,去掉重复代码

相同的东西用一个方法实现,不同的各自去写,然后通过委托组合,加方法满足不同的场景,如果方法特别复杂,就推荐这个。

滑板小猪的博客资料部分资料来自网络,侵权毕设源码联系删除

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 滑板小猪的博客资料

提供最优质的资源集合

立即查看 了解详情