歷史對像(版本對像)

2021-09-05 23:33:05 字數 863 閱讀 4679

什麼叫歷史物件(版本對像)(自己取乙個的名字,不知道是否有專業的名稱了)

在一些系統中我們經常會碰到處理的物件是歷史物件的問題

比方說我們有乙個訂單

訂單裡有多個產品,然後使用者可能會修改這個產品(比如說,**,名稱,稅收,。。。用哲學的語言就是今天的我不是昨天的我。)

哪麼我們認為這個東西就是歷史對像了,訂單關聯的是歷史的產品,如果在設計中直接把它們印射到現在的物件上面,顯然是不太合理的。

然後在程式設計中當中我們一般是把它儲存成映象 order 然後有乙個orderitem 然後orderitem裡面是productsnap(一般是序列成字串形式,我們稱之為副本)

哪我們換一種想法一下。當這個產品被修改的時候,我們並不是真的去修改它,而是為他創造乙個新的對像,而這個過程對使用者是不可見的。也想當於說每一次修改我們就是建立乙個新的版本,而訂單只是關聯到舊的版本。(而且有了版本之後使用者還可以追朔他自己的操作了。)

在資料庫設計和程式設計方面可能還有點複雜,

資料庫基本結構

order (id....)

orderitem (id orderid productid amount....)

product (id...)

基本的想法是這樣的 product(id...) producthistory.(id productid)

另一種方式方式是product(id, guid isactive)

跟order_item關聯的還是用 id

使用者看到都是productid (guid) 然後每次修改就會造成乙個新的product但是它的guid是一樣的

最關鍵的是我們應該有乙個框架來支援它。使我們在程式設計的時候不會有太多這樣的麻煩。否則太多的版本對像會分散程式設計師的開發注意力。

Microsoft XMLHTTP對像屬性

msxml中提供了microsoft.xmlhttp物件,能夠完成從資料報到request物件的轉換以及傳送任務。建立xmlhttp物件的語句如下 set objxml createobject msxml2.xmlhttp 或 物件建立後呼叫open方法對request物件進行初始化,語法格式為 ...

對像相同賦值

using system using system.collections.generic using system.linq using system.text using system.reflection namespace bmw.core.common public static list...

安全發布對像

發布對像定義 是乙個物件能夠被當前範圍之外的 所使用 物件溢位一種錯誤的發布。當乙個物件該沒有構造完成時,就使被其他執行緒所見。下面我們來看一下沒有安全發布的物件 slf4j public class unsafepublish public string getstates public stat...