C++建模實(shí)戰(zhàn)-高考錄取系統(tǒng)
招生工作的第一階段就是收集各個(gè)大學(xué)的招生計(jì)劃。但是在訪問(wèn)大學(xué)的之前,首先需要解決一個(gè)問(wèn)題,到哪里去找到這些大學(xué)呢,為此這里增加了一個(gè)類:EducationDepartment,應(yīng)該叫教育廳吧。我們假設(shè)它管理這學(xué)校。
這樣就通過(guò)調(diào)用EducationDepartment的getUniversity方法得到大學(xué)的清單。
也許你會(huì)說(shuō):不是有些大學(xué)是教育部直屬么?那也沒(méi)有關(guān)系:即使教育部,教育廳管理的大學(xué)都有,也無(wú)非就是多問(wèn)幾次,處理的方式也不會(huì)有太大的區(qū)別。
這種判斷很重要:在變化發(fā)生時(shí),當(dāng)前的設(shè)計(jì)能挺得住么?
接下來(lái)開(kāi)始收集招生計(jì)劃。
對(duì)于每所大學(xué),AdmissionOffice從手中的EnrollmentPlan克隆一個(gè)新實(shí)例,作為模板通過(guò)requestPlan方法交給大學(xué),大學(xué)在通過(guò)setUniversity方法在計(jì)劃上記入自己的信息并設(shè)定招生人數(shù)。
為 什么要克隆呢?因?yàn)楝F(xiàn)實(shí)生活中的招辦應(yīng)該就是通過(guò)復(fù)?。娮游臋n就是復(fù)制)生成空計(jì)劃交給各大學(xué)填寫(xiě)的。從功利的角度來(lái)看,這種方式提供了一種更換計(jì)劃類 型的方法。AdmissionOffice可以完全不了解EnrollmentPlan的細(xì)節(jié)就可以構(gòu)建出新的EnrollmentPlan來(lái)。這實(shí)際上就是Prototype設(shè)計(jì)模式!
最后一步,通過(guò)resigerPlan方法將各大學(xué)記入完了的招生計(jì)劃登記入冊(cè),統(tǒng)一管理。
看到的只是設(shè)計(jì)的結(jié)果,但是得到這個(gè)結(jié)果的過(guò)程中考慮的點(diǎn)可能要遠(yuǎn)大于你看到的。
多學(xué),多練,多問(wèn)問(wèn)為什么.