把 N 個步驟包裝起來,成為一個功能暴露出,而不是要求使用者了解所有細節
簡介
今天我寫一個購物網站,使用者需要知道的就是 加入追蹤清單、加入購物車、下單、付款...etc。
你總不會跟使用者說「你下單前,要先自己跟系統查詢我的庫存夠不夠、查詢我的餘額夠不夠,都可以了你才能點下單喔~」
這些前置作業的確認都應該是系統包裝好,使用者只需要點選「下單」,系統自己會知道下單我要經過哪些流程、要顯示哪些訊息
包裝這些繁瑣功能,提供他需要知道的介面,這種就稱為 Facade Pattern
Pros
- 外部不用懂得繁瑣的步驟
- 當下訂單的步驟需要加/減,不用每個 Caller 都要修改
- Caller 不用相依於所有物件 (ex: 下單需要 StockRepository, UserReposiory, Pay...)
- 不用暴露所有功能給外部