機房重構之實體、datatable、泛型集合 哪個比較“剛”

在敲機房的時候,我們有的同學使用的datatable做返回值,有的使用泛型集合做返回值。那麼問題來了,他們有什麼區別嗎,實體跟他們有什麼關係。

首先看看用datatable的。datatable是數據集的填充用起來很方便,不過他是弱類型,沒有辦法看出數據表中字段的名稱和類型,使用者必須全瞭解數據庫的數據結構。比如UserInfo中第二個字段是UserId,我們使用時就應該這樣使用datatable.rows(0).item(1)。這是十分不方便的,在機房重構中數據庫是我們自己設計的,有時候還要不斷的打開數據庫看看我們需要的字段在第幾個位置,要是數據庫是不可以給我們看的我們就無法完成編程了。而且我們使用的是三層結構,U,B,D依賴的全是實體層,但是使用了datatable後,我們可以看到在從D層往回返的時候默默的就全使用了datatable,而把實體丟掉了一邊。可以說datatable破壞了三層結構。(三層優點:

1、開發人員可以只關注整個結構中的其中某一層;
2、可以很容易的用新的實現來替換原有層次的實現;
3、可以降低層與層之間的依賴;
4、有利於標準化;
5、利於各層邏輯的複用。
6、結構更加的明確
7、在後期維護的時候,極大地降低了維護成本和維護時間)三層是是引用實體的。

接下來我們看看用實體的,我們知道在傳遞參數時可以用變量傳遞,也可以用實體傳遞。當需要的參數比較少的時候,我們可以用變量傳遞參數,但是當需要傳遞大量的參數時,我們就需要用實體類的對象進行傳遞,如需要插入一條上機記錄時,需要給D層傳遞UserID,OnTime,StuID,CardID,等等參數,那麼我們有一個上機的實體,這樣只需對實體中用到的對象進行賦值,然後傳遞實體就可以了。當D層返回一條記錄時,當然我們可以用一個實體來接收他的值,但是如果返回好幾條記錄呢?泛型集合就該閃亮登場了。

泛型集合是將實體對象集封裝成一個泛型集合,不必瞭解數據庫結構,符合面向對象思想,實體類的屬性是強類型,每個字段的類型都是已知的。可以看出他可以彌補一些datatable的缺點。使用泛型其實我們還是使用的實體,沒有破壞三層結構。但是如果對泛型集合中的每個實體一個一個賦值的話,也是比較複雜的,那麼我們就將datatable轉化成泛型,這樣就結合了他們各自的優點,更好的爲我們的三層服務。

總結,實體,datatable,泛型都很好,都是智慧的結晶,都有其存在的價值,我們要根據我們的結構和需要選擇最適合的來爲我們的程序服務。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章