業務邏輯層的設計(四)——表模塊模式簡介


其實我覺得寫博文也可以跟寫小說一樣,有連載,只要讀得順暢就好,我並不想通過幾篇博文讀下來,就讓讀者成為某個方面的專家。

在每寫一篇短短的博文,都曾參考過很多有價值的書籍和其他人的博文,所以不可能把所有的東西都寫進來的。

我最近在思考的時候,經常茶不思飯不想,不知道的人看來,以為我會是得了相思病的少年。

 

上集回顧

在上幾篇業務層的設計都描述的是領域模型的模式,為了解釋領域模型的使用,我居然提前寫了一點數據訪問層。

領域模型適合業務邏輯比較復雜,業務規則繁多,因為這些復雜的元素都會被內聚在領域模型之中,而領域模型又可以被重用。

這樣一來就能避免許多業務邏輯的重復分布在各個地方,對維護帶來說,這是非常有愛的。

但是在需求和設計階段,需要花費很多時間,但是你會發現領域模型重用了幾次之后,就會體會到它的好處。

初學者不要輕易嘗試,尤其是半路出家的程序員。

 

所以接下來打算介紹一些比較簡單的模式,表模塊模式和事務腳本模式。

我會對表模塊做一個比較簡單的描述,就是比較簡單,因為我不是很喜歡它。

相對而言,實踐中事務腳本我用的還算比較有心得,打算在后續的博文中慢慢介紹。

 

表模塊(Table Module)

先來宏觀地看一下操作流程:

通過創建一個DataSet數據集,添加一個表,輕松構建一個強類型的DataSet

可以為它添加一個查詢

非常輕松,VS將自動生成查詢SQL,但是SQL語句無法太復雜,不能超出VS的識別范圍。

調用方法:

可以看到它返回的是一個強類型的DataTable,使用起來非常方便,但是當你實戰中用的時候,會發現問題的,比如你有一個備注字段是Null,試試看吧,至少在.NET2.0中就悲劇了。

 

表數據網關模式:

用代碼直觀地表示:

在數據網關中執行SQL命令返回想要的數據集,然后在業務類中處理,得到想要的結果。

業務類

    PPDataSet.PP_VIRTUALSENDCONTROLDataTable _table=null;

    public VirtualSendControlManager() { }

    public VirtualSendControlManager(PPDataSet.PP_VIRTUALSENDCONTROLDataTable table)
    {
        _table = table;
    }

    public PPDataSet.PP_VIRTUALSENDCONTROLRow GetRow(int index)
    {
        if (_table.Rows.Count == 0)
        {
            return null;
        }
        return _table.Rows[index] as PPDataSet.PP_VIRTUALSENDCONTROLRow;
    }


小結:

VS生成的強類型的DataTable給我們帶來很多便利,它可以是某個表,也可以是視圖。

只不過使用中它還是會有一些問題的,比如之前提到的null的問題,不知道是不是一個bug。

如果不使用VS生成的強類型數據集,那么表模塊就失去了自己的優勢,尤其是業務對象和數據庫表結構差異較大的情況下。

如果要實現自定義的強類型數據集,可以參考微軟的源碼,然后自行設計,不過工作量受不了啊。

表模塊模式是一個搞畢業設計的利器(邪惡的想法)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM