為什麼PetShop要分成這麼多的Project?

很多人看到PetShop的Source Code之後,第一個反應就是,為什麼要分這麼多的Project?不是一個Project就可以搞定嗎?為什麼要弄得這麼複雜?

回想物件導向的目的在哪裡?就是為了日後重複使用(Reuse),PetShop將Data Access Layer,Business Logic Layer,Model....等使用獨立的Project,就是為了日後重複使用。

舉個公司內活生生的例子,像我寫的Forum和Support兩個系統,和科長寫的 Member系統,由於有部份Table是共用的,當然有些SQL和商業邏輯也是共用的,但因為我們都沒有分層,也沒將Data Access Layer,Business Logic Layer獨立Project做編譯,導致不同專案雖然有用到相同的SQL和商業邏輯,卻還是各寫各的,或是用Copy的方式,這樣不僅浪費時間,而且日後維護也很困然,只要商業邏輯一改,每個專案都得改;若如PetShop那樣,將Data Access Layer,Business Logic Layer獨立Project編譯,不同系統只需引用相同的Data Access Layer Project,Business Logic Layer Project,這樣就不用各寫各的,或者用Copy的方式了,而且日後若要修改,也只要修改一份程式即可。

再舉一個公司的例子,我們team有一個系統,原本是用Web開發的,但因為歐洲分公司網路狀況不佳,所以並不適合使用Web系統,所以打算另外開發一套Windows版的系統給歐洲用,且支援離線輸入的方式,而台灣、大陸和美國則繼續使用Web版,但其他如商業邏輯、Stored Procedure、資料庫結構等都和原來Web版完全一樣。但由於原來的Web版並沒有分層,且都寫在同一個Project下,導致要開發Windows版時,又幾乎是重寫一套。假如原本Web版也如PetShop那樣分層且分專案開發,那Windows版將可直接使用Web版的Business Logic Layer、Data Access Layer程式,只需再開發Windows版的介面和離線輸入部分即可。

由上所知,PetShop的分層分專案寫法其實對日後維護幫助很大,值得我們加以學習。

 

你可能感兴趣的:(sql,Web,windows,table,Access,layer)