freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

ro中間層設(shè)計(jì)方案(編輯修改稿)

2025-07-03 17:43 本頁(yè)面
 

【文章內(nèi)容簡(jiǎn)介】 身也必須要支持持久化,否則,該變量無(wú)法被持久化。關(guān)鍵的實(shí)現(xiàn)是采用了遞歸調(diào)用的技術(shù),已不屬本方案的討論范圍,具體請(qǐng)考慮有關(guān)資料。說(shuō)明:該單元類設(shè)計(jì)較復(fù)雜,詳細(xì)說(shuō)明如下:1. TPersistentAdapter類:主要功能: 實(shí)現(xiàn)了數(shù)據(jù)持久化接口的一個(gè)基類。 該類實(shí)現(xiàn)從TROComplexType派生,實(shí)現(xiàn)持久化功能的基礎(chǔ)上,對(duì)接口進(jìn)行封裝,從該類派生的對(duì)象,可以不用實(shí)現(xiàn)QueryInterface等幾個(gè)方法。另外加入SetDestroyFlag對(duì)接口的生命周期進(jìn)行控制。如果調(diào)用SetDestroyFlag設(shè)置為真,則用完接口之后,自動(dòng)釋放,不再受接口生命周期控制,有關(guān)生命周期問(wèn)題請(qǐng)參考(COM原理)。使用說(shuō)明: procedure SetDestroyFlag(b_Destroy: Boolean)。 stdcall。 設(shè)置為真。2.TDataTransferObject類: TDataTransferObject = class(TPersistentAdapter, IDataTransferObject) private PropList : TMPropList。 FFldProperty: TDTOProperty。 DTOSQL: TDTOSQL。 DTODisplay: TDTODisplay。說(shuō)明: 元數(shù)據(jù),傳輸對(duì)象,簡(jiǎn)稱(DTO)。多層應(yīng)用中,層與層之間傳輸?shù)膶?shí)體對(duì)象。1.TMPropList:底層實(shí)現(xiàn)RTTL功能的一個(gè)輔助類。附:在DTO進(jìn)行序列化時(shí),并不會(huì)實(shí)現(xiàn)該類的序列化。2.TDTOProperty類:聲明如下: TDTOProperty = class(TPersistentAdapter) private FDTOType: TDTOInfoType。 //類型(table, view) FMapName: String。 //名字 _Index: Integer。 //索引在Grid中的位置 published Property FIndex: Integer Read _Index Write _Index。 Property DTOType: TDTOInfoType Read FDTOType Write FDTOType。 Property MapName: String Read FMapName Write FMapName。 public constructor Create。 override。 destructor Destroy。 override。 end。FDTOType: 標(biāo)識(shí)實(shí)體映射的類型(table, view),F(xiàn)mapName: 映射的名字,_Index: 在Grid中的索引,這里要詳細(xì)講一下,這個(gè)索引的概念,我們假設(shè)從服務(wù)器端獲取一個(gè)TDTOList(數(shù)據(jù)對(duì)象列表),而每個(gè)對(duì)象在List中都有自己的位置,可能被刪除,新增,但會(huì)不會(huì)和界面中的Grid一致呢,不一致,因此這個(gè)就是默認(rèn)更新界面索引用的,你可能會(huì)想,我點(diǎn)擊的時(shí)候就能判斷行列,干嘛用這個(gè),因?yàn)橛袝r(shí)候你可能會(huì)在程序內(nèi)部多次處理新增,刪除,操作,如此一來(lái),整個(gè)數(shù)據(jù)就亂了。一句話,就是由于TDTOList里面的DTO索引和Grid中的索引可能會(huì)不一致造成的。附:在DTO進(jìn)行序列化時(shí),并不會(huì)實(shí)現(xiàn)該類的序列化。3.TDTOSQL類聲明如下:TDTOSQL = class(TPersistentAdapter) private FVisSelectList: TStringList。 //隱藏生成SQL語(yǔ)句列表 (隱藏字段不生成select語(yǔ)句) FVisInsertList: TStringList。 //隱藏生成SQL語(yǔ)句列表 (隱藏字段不生成Insert語(yǔ)句) FVisUpdateList: TStringList。 //隱藏生成SQL語(yǔ)句列表 (隱藏字段不生成Update語(yǔ)句) published Property VisSelectList: TStringList Read FVisSelectList Write FVisSelectList。 Property VisInsertList: TStringList Read FVisInsertList Write FVisInsertList。 Property VisUpdateList: TStringList Read FVisUpdateList Write FVisUpdateList。 public constructor Create。 override。 destructor Destroy。 override。 end。功能說(shuō)明: 該類可以在用代碼生成工具進(jìn)行配置的時(shí)候,控制字段是否生成SQL語(yǔ)句,可控制(Select語(yǔ)句,Insert語(yǔ)句, Delphi語(yǔ)句)。原因: 我們?cè)陂_發(fā)的時(shí)候,有些字段,比如自動(dòng)加1的字段,我們并不想使用這些字段。因?yàn)樯蛇@些字段,可能造成insert失敗。附:在DTO進(jìn)行序列化時(shí),并不會(huì)實(shí)現(xiàn)該類的序列化。4.TDTODisplay類聲明如下: TDTODisplay = class(TPersistentAdapter) private FDTOCaptionList: TStringList。 //說(shuō)明列表 FHideDTOList: TStringList。 //隱藏字段列表 (隱藏字段不顯示界面)。 FBindCtlList: TList。 //綁定控件 procedure RefVOCtlDisplay(pDTO: TDataTransferObject)。 function GetFldContent(pTO: TDataTransferObject。 i_j: Integer): String。 procedure DrawControlLabel(tmpCtl: TControl。 Caption: String)。 procedure DrawControlContent(tmpCtl: TControl。 Caption: String)。 published Property DTOCaptionList: TStringList Read FDTOCaptionList Write FDTOCaptionList。 Property HideDTOList: TStringList Read FHideDTOList Write FHideDTOList。 Property BindCtlList: TList Read FBindCtlList Write FBindCtlList。 public procedure FreeBindCtlList。 procedure BindControl(tmpCaptionCtl,tmpCtl: TControl。 fld: String)。 overload。 procedure BindControl(tmpCaptionCtl,tmpCtl: TControl。 fld, fldEx: String)。 overload。 public constructor Create。 override。 destructor Destroy。 override。 end。功能介紹: TDTODisplay是一個(gè)和UI顯示相關(guān)的類。通過(guò)代碼生成工具,F(xiàn)DTOCaptionList里面會(huì)自動(dòng)存放上所有的Grid的Caption的顯示,及需要隱藏的界面字段。 同時(shí),BindControl設(shè)置DTO綁定的字段。同步更新界面和DTO元數(shù)據(jù)對(duì)象的顯示。使用需知: FBindCtlList列表存放的數(shù)據(jù)結(jié)構(gòu)如下: PTBindCtl = ^TBindCtl。 TBindCtl = Record CtlCaption: TControl。 //綁定控件(標(biāo)題) Ctl: TControl。 //綁定控件(內(nèi)容) fld: String。 //字段名稱 fldEx: String。 //字段名稱2 在使用數(shù)據(jù)工具的時(shí)候,可對(duì)數(shù)據(jù)庫(kù)的每個(gè)字段,進(jìn)行標(biāo)識(shí)。 注意: 我們?cè)贒TO(數(shù)據(jù)傳輸對(duì)象的TDTOProperty的_index里放置的是Grid對(duì)應(yīng)的行,那么對(duì)應(yīng)的列呢? 答案在FbindCtlList里面,因?yàn)槲覀冸m然使用了DTO元數(shù)據(jù)傳輸對(duì)象,但字的字段有些是不會(huì)生成UI的,那么我們必須對(duì)它的字段進(jìn)行重新整理,以達(dá)到對(duì)象的屬性和Grid的行列映射的目的。以現(xiàn)實(shí)(數(shù)據(jù)感知)功能。附:在DTO進(jìn)行序列化時(shí),并不會(huì)實(shí)現(xiàn)該類的序列化。在做一份數(shù)據(jù)庫(kù)文檔的同時(shí),通過(guò)代碼生成,可以實(shí)現(xiàn)Grid的標(biāo)題設(shè)置,同時(shí)可以設(shè)置字段以達(dá)到對(duì)UI界面的控制。(使用配置工具的重要性)。5. TDataTransferObject類:詳細(xì)說(shuō)明:TDataTransferObject = class(TPersistentAdapter, IDataTransferObject) private PropList : TMPropList。 FFldProperty: TDTOProperty。 DTOSQL: TDTOSQL。 DTODisplay: TDTODisplay。 FOP: String。 function GetDTOProperty: TDTOProperty。 published Property OP: string Read FOP Write FOP。 procedure InitDTOObject。 virtual。 procedure SetIndex(FIndex: Integer)。 virtual。 function IsEqual(pDTO: TDataTransferObject): Boolean。 virtual。 abstract。 public property FPropList: TMPropList read PropList write PropList。 property FldProperty: TDTOProperty read FFldProperty write FFldProperty。 property FDTOSQL: TDTOSQL read DTOSQL write DTOSQL。 property FDTODisplay: TDTODisplay read DTODisplay write DTODisplay。 procedure RefVOCtlDisplay。 procedure SetDTOObj(pDTO: TDataTransferObject)。 procedure GetDTOObj(pDTO: TDataTransferObject)。 public constructor Create。 override。 destructor Destroy。 override。 end。簡(jiǎn)單描述:所有數(shù)據(jù)傳輸對(duì)象(DTO),層與層之間傳輸?shù)膶?duì)象,須從TDataTransferObject派生,在服務(wù)器接口定義的對(duì)象是TDataTransferObject類型。說(shuō)細(xì)說(shuō)明:Property OP: string Read FOP Write FOP。 這個(gè)字段,在客戶端調(diào)用insert,update, delete時(shí),會(huì)自動(dòng)修改此標(biāo)識(shí),連同數(shù)據(jù)一起傳到服務(wù)器,然后由服務(wù)器端獲得OP,生成語(yǔ)句執(zhí)行。procedure RefVOCtlDisplay。 該函數(shù)將DTO的數(shù)據(jù)刷新到綁定的控件上。使用注意的地方:在數(shù)據(jù)序列化時(shí),僅僅對(duì)published屬性的變量進(jìn)行了持久化操作,其它的數(shù)據(jù)并沒(méi)有進(jìn)行持久化操作,減少網(wǎng)絡(luò)流量,提高的傳輸效率。例如:TDTODisplay類,UI界面的相關(guān)配置,將需要在本地加載運(yùn)行,因此在序列化的時(shí)候,對(duì)這些類都不進(jìn)行序列化。InitDTOObject函數(shù)的調(diào)用,這個(gè)函數(shù)做了一個(gè)數(shù)據(jù)傳輸對(duì)象的初始化操作,因此從服務(wù)器傳遞到客戶端的對(duì)象,僅僅有published區(qū)的數(shù)據(jù)傳遞過(guò)來(lái),如果需要界面綁定操作,則需要調(diào)用InitDTOObject函數(shù), 它會(huì)初始化Grid的Caption和隱藏UI界面控制等, 如果僅僅使用數(shù)據(jù),則可以不調(diào)用該方法,而在已經(jīng)封裝好的UI 綁定的接口調(diào)用中,這些初始化都已經(jīng)被調(diào)用,如果要發(fā)布新的綁定UI接口,則注意要做InitDTOObject操作。附:另外,在根據(jù)一個(gè)類名,動(dòng)態(tài)生成一個(gè)對(duì)象的時(shí)候,也必須調(diào)用該函數(shù)進(jìn)行初始化,因?yàn)閯?dòng)態(tài)生成
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1