近幾年來,設(shè)計(jì)模式試題已廣泛出現(xiàn)在一些IT企業(yè)(包括一些巨牛型企業(yè))的面試和筆試題中,從本文開始我將通過幾篇文章來介紹一下一些已出現(xiàn)過的設(shè)計(jì)模式面試和筆試題,歡迎大家討論。
某房地產(chǎn)公司欲開發(fā)一套房產(chǎn)信息管理系統(tǒng),根據(jù)如下描述選擇合適的設(shè)計(jì)模式進(jìn)行設(shè)計(jì):
(1) 該公司有多種房型,如公寓、別墅等,在將來可能會(huì)增加新的房型;
(2) 銷售人員每售出一套房子,主管將收到相應(yīng)的銷售消息。
參考解答:【個(gè)人觀點(diǎn)】
對(duì)于描述(1)可以選擇使用工廠方法模式,對(duì)于描述(2)可以選擇使用觀察者模式,本題參考類圖如下所示:
在類圖中,HouseCreator是抽象房屋工廠類,其子類VilladomCreator用于創(chuàng)建別墅Villadom,子類ApartmentCreator用于創(chuàng)建公寓Apartment,Villadom和Apartment都是抽象房屋類House的子類,此時(shí)應(yīng)用了工廠方法模式,如果增加新類型的房屋,只需對(duì)應(yīng)增加新的房屋工廠類即可,原有代碼無須做任何修改;House類同時(shí)作為抽象觀察目標(biāo),子類Villadom和Apartment作為具體觀察目標(biāo),相關(guān)人員類Stakeholder作為抽象觀察者,其子類Manager(主管)作為具體觀察者,實(shí)現(xiàn)了在Stakeholder中聲明的response()方法,當(dāng)房屋售出時(shí),房屋的狀態(tài)status將發(fā)生變化,在setStatus()方法中調(diào)用觀察者的response()方法,即主管將收到相應(yīng)消息,此時(shí)應(yīng)用了觀察者模式。
[設(shè)計(jì)模式 面試題]