門面模式:
在外界訪問(wèn)要訪問(wèn)多個(gè)內(nèi)部系統(tǒng)時(shí),并且他與這些內(nèi)部系統(tǒng)有著復(fù)雜的關(guān)系時(shí),我們則可以用門面模式來(lái)解決這樣的問(wèn)題。
門面模式他只是提供一個(gè)可以共外界方便訪問(wèn)內(nèi)部子系統(tǒng)的一個(gè)接口,他并不會(huì)對(duì)子系統(tǒng)進(jìn)行擴(kuò)展,他只提供子系統(tǒng)所具有的方法。對(duì)外界來(lái)說(shuō),他是一個(gè)子系統(tǒng),但是內(nèi)部的子系統(tǒng)并不知道有這么一個(gè)類。例如:一個(gè)學(xué)生要去圖書館借書,這里有3個(gè)表,rule是記錄不同的讀者的借書規(guī)則(如研究生可以借7而本科生只能借4本),publish表是記錄過(guò)期未還書的學(xué)生,passwork是記錄圖書館所頒發(fā)過(guò)的借書證。如果一個(gè)學(xué)生要借書,則他必須要有一個(gè)在passwork中存在的借書證,并且沒有在publish中的情況,則可以保證向該學(xué)生提供借閱,但是借閱的書則要按rule中的規(guī)則來(lái)進(jìn)行。所以一個(gè)學(xué)生client借書必須訪問(wèn)這些類,為了便于管理,我們提供一個(gè) FacadeFactory類來(lái)處理,這個(gè)類提供了所有client向子系統(tǒng)訪問(wèn)的方法。這樣對(duì)于client來(lái)說(shuō)就輕松多了,也便于我們維護(hù)代碼了。但是FacadeFactory不能夠向client提供內(nèi)部子系統(tǒng)不存在的方法。
由于一個(gè)系統(tǒng)中所需要的只需要一個(gè)實(shí)例,則我們可以把門面類設(shè)置為單例類,如上面的FacadeFactory,他應(yīng)該設(shè)置為一個(gè)單例類,這樣就不會(huì)發(fā)生多個(gè)人同時(shí)借一本書了。
posted on 2005-08-12 19:38
sky 閱讀(233)
評(píng)論(0) 編輯 收藏