2011年7月30日 星期六

軟體架構設計﹣Service & Responsibility





Presentation - Domain - Datasource 他們三層之間有什麼關係呢?

        一般來說,大家會覺得 Datasource 提供資料給 Domain 去運算再交給 Presentation,所以他們彼此之間具相依性,但我認為 Presentation 與 Domain & Datasource 是毫不相關的,Presentation 接收到事件時,他將他所能負責的工作完成,其餘的工作則直接委任(Delegate)出去。




        而Presentation將任務委任(Delegate)給誰一點也不重要,Presentation 不需要知道他將要把任務委任(Delegate)給誰,因為 Presentation 只要專注於自己的任務,其餘的交付給處理此事件的人,如此一來這個架構能達到高內聚力低偶合力。

        既然我們不知道該委任的目標,我們就需要有一個能接受Presentation 所委任(delegate)的目標,而能承擔此位置的人,必須能隨時接受Presentation的請求,而有如此特性的,我們可以引入一個Service的概念,我們就讓 Service 去擔任 Presentation 所委任(Delegate)的目標,再由 Service 將任務交付給應交付的對象。


再來我們將這個大問號拆開來看






        依上述 Service 接收到 Presentation 的委任(delegate),Service知道目標為 Domain,進而將 Presentation 所委任(delegate)的任務交給 Domain。


        當我們的 Service 將任務交付給 Domain ,Domain 依然是將屬於它應處理的事件處理完,將任務交付給 Service,雖然 Domain 依然不知道他把任務 Delegate (委任)給誰,但 Service 會把 Domain 將任務送達。





Copyright ©  2008-2012 www.notonly.com.tw. All Rights Reserved.

張貼留言