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