关键字:设计模式 1/**//// <summary>
2/// 日志记录类
3/// </summary>
4public class Log
5 {
6
7 public void WriteEvent()
8 {
9 Console.WriteLine("EventLog Success!");
10 }
11
12 public void WriteFile()
13 {
14 Console.WriteLine("FileLog Success!");
15 }
16
17 public void Write(string LogType)
18 {
19 switch(LogType.ToLower())
20 {
21 case "event":
22 WriteEvent();
23 break;
24
25 case "file":
26 WriteFile();
27 break;
28
29 default:
30 break;
31 }
32 }
33 }
34
这样的程序结构显然不能符合我们的要求,如果我们增加一种新的日志记录的方式DatabaseLog,那就要修改Log类,随着记录方式的变化,switch语句在不断的变化,这样就引起了整个应用程序的不稳定,进一步分析上面的代码,发现对于EventLog和FileLog是两种完全不同的记录方式,它们之间不应该存在必然的联系,而应该把它们分别作为单独的对象来对待。
1/**//// <summary>
2/// EventLog类
3/// </summary>
4public class EventLog
5{
6 public void Write()
7 {
8 Console.WriteLine("EventLog Write Success!");
9 }
10}
11
12/**//// <summary>
13/// FileLog类
14/// </summary>
15public class FileLog
16{
17 public void Write()
18 {
19 Console.WriteLine("FileLog Write Success!");
20 }
21}
22
进一步抽象,为它们抽象出一个共同的父类,结构图如下:
实现代码:
文章来源于领测软件测试网 https://www.ltesting.net/