簡體   English   中英

對象的參考問題

[英]Reference issue with an object

假設我有一個模型,該模型是一個單例,因此只有一個實例。 我將此模型傳遞給其他類,他們將其保存在變量中。

然后,稍后我將同一模型的起點替換為該模型的序列化版本。 其他持有此模型變量的類,它們仍將指向舊的引用權嗎?

我將如何用一個新的引用替換該模型,並讓所有其他類指向這個新的引用?

如果這些其他對象都保存有對單例的引用,則需要通過(重新)調用傳入新實例的方法並重新設置變量來手動更新它們。

一種更聰明的方法是繞過一個簡單的包裝對象,該包裝對象本身引用了單例,並且所有其他對象都通過它訪問了該單例。 當您需要更新到新的單例時,只需更改包裝器的引用即可。

典型的單例實現甚至通過在單例類上公開公開靜態get()方法,並將其留給其他類來調用此方法,從而進一步簡化了此過程,而不是像訪問者一樣傳遞單例。

通常,對Singleton進行序列化和反序列化是一個非常糟糕的主意,您可能會遇到許多該對象的實例,並且它可能不再用作Singleton。 我寧願序列化我單身人士持有的主要內容,而不是整個對象本身。

如果您確實需要序列化,那么您可能必須利用某種注冊中心,其中使用類自行注冊,而序列化將更改通知所有注冊的類。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM