設(shè)計模式 面試題

學(xué)人智庫 時間:2018-01-17 我要投稿
【clearvueentertainment.com - 學(xué)人智庫】

近幾年來,設(shè)計模式試題已廣泛出現(xiàn)在一些IT企業(yè)(包括一些巨牛型企業(yè))的面試和筆試題中,從本文開始我將通過幾篇文章來介紹一下一些已出現(xiàn)過的設(shè)計模式面試和筆試題,歡迎大家討論。

某房地產(chǎn)公司欲開發(fā)一套房產(chǎn)信息管理系統(tǒng),根據(jù)如下描述選擇合適的設(shè)計模式進行設(shè)計:

(1) 該公司有多種房型,如公寓、別墅等,在將來可能會增加新的房型;

(2) 銷售人員每售出一套房子,主管將收到相應(yīng)的銷售消息。

參考解答:【個人觀點】

對于描述(1)可以選擇使用工廠方法模式,對于描述(2)可以選擇使用觀察者模式,本題參考類圖如下所示:

在類圖中,HouseCreator是抽象房屋工廠類,其子類VilladomCreator用于創(chuàng)建別墅Villadom,子類ApartmentCreator用于創(chuàng)建公寓Apartment,Villadom和Apartment都是抽象房屋類House的子類,此時應(yīng)用了工廠方法模式,如果增加新類型的房屋,只需對應(yīng)增加新的房屋工廠類即可,原有代碼無須做任何修改;House類同時作為抽象觀察目標(biāo),子類Villadom和Apartment作為具體觀察目標(biāo),相關(guān)人員類Stakeholder作為抽象觀察者,其子類Manager(主管)作為具體觀察者,實現(xiàn)了在Stakeholder中聲明的response()方法,當(dāng)房屋售出時,房屋的狀態(tài)status將發(fā)生變化,在setStatus()方法中調(diào)用觀察者的response()方法,即主管將收到相應(yīng)消息,此時應(yīng)用了觀察者模式。

[設(shè)計模式 面試題]