NewLife.XCode中如何借助分部抽象多個具有很多共同字段的實體類


背景:

兩個實體類:租房圖片、售房圖片

這兩個表用於存儲房源圖片記錄,一個房源對應多個圖片,兩個表的差別就在於一個業務關聯字段。

租房圖片中的RentID記錄這個圖片屬於哪個租房信息;

售房圖片中的SaleID記錄這個圖片屬於哪個售房信息。

聲明:這是二次開發,表結構不是我設計的。

 

因為兩個實體類的操作極為相似,我們可以提取出來一個接口,進行統一操作。這里只有兩個實體類,可能優勢不明顯,但如果有八個十個呢?

現在XCoder新模版(2012年3月以后)生成的實體類都是分部類,都對應有一個分部實體接口。

由於XCode是充血模型,我們可以為這兩個實體類做一個統一的基類來達到我的目的,但是這個統一的基類里面無法訪問子類的字段,編碼上很不方便。

這一次,我們用分部接口!

 

先來看看這兩個實體類

HZ(`6S)[@XA`7(G52XICO2V4~P2`95HG[NH}Q$@02M`%PV

這兩個實體類,就RentID和SaleID字段的不同,其它都一樣,包括名字、類型、業務意義。

 

我們新建一個接口,然后借助分部接口來統一

$Y%A1CR697UA67[`WWRKJ88

如上,通過分部接口,我們無需修改原有的接口文件,即可實現給接口多增加一個繼承。

實際上也不應該修改原有的接口文件,因為原有的接口位於實體類的數據類文件中,那是隨時會被新的代碼生成覆蓋。

IHouseImage接口里面的屬性,是從IRentimage里面拷貝過來,然后刪掉RentID

如果不要那個BizID,那么我們的工作就算完成了,不需要對原有的實體類代碼進行任何修改。

 

只是還有一點遺憾,不能通過接口操作RentID和SaleID。

我們來擴展一下,增加一個BizID屬性來統一它們,因為兩個實體類都沒有這個屬性的實現,所以我們需要在實體類業務文件那里手工增加實現。

NN`ZDJSY(FCF]N%~R%$1HST

J(S`U{DBNSE{PP`L]XNEI(F

 

大功告成!我們看看怎么用它們。

7Q4O)MQ2Z%`Z8~(E`29BRCP

 

如上,根據不同的類型,創建實體操作者eop。我這里的類型是硬編碼,也可以根據業務情況采用別的方式得到類型。

實體操作者eop表現了事務管理、創建實體entity的操作。

實體entity是IEntity類型,可以進行添刪改等操作。這里為了實體接口的精簡和獨立,實體接口並沒有繼承IEntity,實際上實體類都繼承了這兩個接口。

所以,我們可以先轉為IHouseImage接口,然后隨意操作,當然你也可以在接口中增加各種方法。

 

好了,結束了!


免責聲明!

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



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