以下是描述在一個(gè)數據訪(fǎng)問(wèn)層的設計過(guò)程(只一個(gè)總體設計并不包含細節)運用基于接口編程的方法設計;以下純屬表達我個(gè)人的設計過(guò)程中方法,如果朋友有問(wèn)題和見(jiàn)解發(fā)表出來(lái)多多交流。
在做數據庫應用系統的過(guò)程經(jīng)常要和數據處理對象,SQL語(yǔ)句打交道;做久了就發(fā)覺(jué)其實(shí)這些工作可以通過(guò)封裝相應的組件來(lái)簡(jiǎn)化這方面的工作。于是就下定決心把這個(gè)組件做出來(lái),在做之前先把以前的東西和上網(wǎng)看的資料總結一下,重要一點(diǎn)是數據在處理SQL語(yǔ)句有什么細節的差別如參數名標認等;明確做這個(gè)組件目的和組件需要完成的功能。
組件的功能包括:
能處理所有實(shí)現IDbCommand接口的對象。
支持實(shí)體對象的操作:增加、刪除、修改和查詢(xún)等操作。
能對不同數據庫進(jìn)行操作。
組件的功能明確之后就制定相應的接口,因為我覺(jué)接口可以規范組件的開(kāi)發(fā),在編寫(xiě)代碼的過(guò)程中不用考慮模塊與模塊之間細節上的實(shí)現。
組件的主要接口包括:
IDriverType 數據設備提供者描述接口
IDateSession 數據處理環(huán)境描述接口
IField 字段表達式描述接口
IExpression 查詢(xún)表達式描述接口
組件還內還有很多相關(guān)接口如:.NET FrameWork 的IDbConnection,IDbDataAdapter和一些命令持久化應用接口等;這些都是內部處理就一一詳細描述了。
IDriverType接口
數據庫提供者描述接口,主要功能是實(shí)現組件處理不同數據庫的能力。是組件內部處理數據所用到的對象和生成相應SQL的關(guān)鍵標識的提供者。是組件的核心部分,但確是組件代碼結構最簡(jiǎn)單的部份,主要是方便其他開(kāi)發(fā)人員擴展出新的數據庫提供者。
IDataSession接口
數據處理環(huán)境描述接口,主要的功能是對數據庫進(jìn)行不同的操作;它除了能處理所有實(shí)現的IDbCommand對象以外,還能對實(shí)體對象進(jìn)行增、刪、改、查等操作并反映到數據庫中;數據的事務(wù)處理等功能。IDataSession必須依賴(lài)于IDriverType,因為IDataSession用到數據處理對象必須由IDriverType所提供。
IField接口
字段表達式描述接口,主要功能是描述更新和插入數據時(shí)相應的字段信息。用于處理更改個(gè)別字段所使用的。正常情況下應該使用實(shí)體對象插入或修改。
IExpression接口
查詢(xún)表達式描述接口,主要功能是生成SQL的條件表達式;通過(guò)這個(gè)接口可以實(shí)現任何復雜的條件表達式構造。因為在處理對象操作的情況下是不能和直接編寫(xiě)SQL條件語(yǔ)句相關(guān)結合,所以抽取這樣一個(gè)接口結合對象操作上更方便。雖然通過(guò)IExpression可以實(shí)現任意的查詢(xún)條件,但并不能說(shuō)明它能代替SQL語(yǔ)句;畢竟在一些很復雜的查詢(xún)中SQL相對來(lái)說(shuō)比較直觀(guān)。IExpression也是依賴(lài)于IDriverType,因為不同數據庫在參數名的標識上是有區別的.
以上是組件在設計時(shí)主要功能實(shí)現描述,為了更直觀(guān)下面的整個(gè)組件實(shí)現類(lèi)關(guān)系圖:
聯(lián)系客服