天天看點

模闆方法模式在學生出操點名的應用

1、現象分析

全國各個大、中、國小都有早上讓學生出操的習慣。常常有部分同學不願意出動,經常缺席早操早鍛煉。是以,教務處每天都要實施早操點名彙報制度。

一個學校往往有多個年級、年級裡有多個班。當各班班長清點完人數後,向上司彙報人數時的格式基本一樣,即:

XXX班有多少人,實到多少人,未到多少人,XXX班長YYY,報到完畢!

2、模闆方法模式在學生出操點名的應用

可以考慮利用模闆方法,将其實作。

UML圖如下:

模闆方法模式在學生出操點名的應用

如圖1,基類CClassInfo中定義了三個方法:

ReportRegistInfoTemplate()是一個模式方法,用來調用所定義的虛方法;

GetGradeNum()和ShowReporterName()是兩個虛方法,必須由派生類進行實作。

案例代碼如下:

運作效果如下:

模闆方法模式在學生出操點名的應用

圖2 出操情況彙報

在main()函數中調用時,我們隻是重複使用了下面的語句

CClassInfo classInfo = new CGrade1ClassInfo(1, 80, 78);

classInfo.ReportRegistInfoTemplate();

根據不同的對象,建立不同的執行個體,再通過大家統一的模闆方法接口:

            public void ReportRegistInfoTemplate()

           {

               Console.WriteLine(" {0}年級 {1}班:總人數{2}人,實到人數{3}人,{4}人未到。",

                                           GetGradeNum(),this.CassNo,this.TotalStuNumber,this.ActualPreset,

                                           (this.TotalStuNumber-this.ActualPreset));

               this.ShowReporterName();

           }

進而避免了大量重複(相似)的方法在派生類中多次實作的問題。

上面案例印證了下面的觀點:

模闆方法模式通過把不變行為搬移到超類,去除子類中的重複代碼。

<b>案例源碼</b>

模闆方法模式在學生出操點名的應用

繼續閱讀