介紹了在開發系統很常會用到的UserControl與MasterPage後,接著來介紹我很常設計的一個類別: BasePage。
BasePage是我自己建的一個類別,繼承自System.Web.UI.Page,接著有需要使用到BasePage共通性的頁面,就都繼承於BasePage。
可以降低重複開發,統一修改,多墊一層super class,雖非抽象介面,但Page是一個特別的class,所以super class並不會造成太多class與class之間的問題。只有繼承鏈的強耦合問題。
Issues
1.繼承自System.Web.UI.Page
2.頁面的super class
3.可自訂function , property跟event(搭配頁面生命週期做變化)
4.統一處理共同的資訊,如
(1)Global logger
(2)存取設定檔或Resource檔,例如Message多國語言
(3)註冊JavaScript的function
(4)每一個繼承BasePage子頁面都需要的畫面處理
5.與MasterPage的差異
(1)focus
MasterPage:處理的共同property與function,都是focus在跟MasterPage上UI有關的東西
BasePage:處理的通常是比較非UI,但每一支頁面幾乎會用到的共同function
(2)特性
MasterPage:繼承自UserControl
BasePage:通常繼承System.Web.UI.Page (也有可能繼承於另一個自訂的BasePageX.cs)
6.同樣要注意的特點
(1)每頁都套用MasterPage或繼承BasePage,代表上面有寫的都會跑,要小心過於肥大,影響performance。單一職責原則在這邊也同樣適用。
(2)繼承就是侵入性的強耦合,繼承有的問題,在這邊使用上也有可能會出現。介面隔離原則跟依賴反轉原則,用來解耦的方式,在這邊也同樣適用。