在面向對象程序設計中,不可變對象是指在創建后屬性不能更改的對象。相比之下,大多數對象是可變對象,這意味著它們的某些或全部屬性在創建后可以自由更改。各種計算機語言都能創建不可變對象,包括Java、C、erlang、Tcl和sc...
在面向對象程序設計中,不可變對象是指在創建后屬性不能更改的對象。相比之下,大多數對象是可變對象,這意味著它們的某些或全部屬性在創建后可以自由更改。各種計算機語言都能創建不可變對象,包括Java、C、erlang、Tcl和scala。在計算機編程方面,不可變對象是指其屬性在創建后不能更改的對象。可以通過以下兩種方法之一創建不可變對象:創建定義為不可變的類或顯式聲明其他可變對象為不可變對象。創建不可變類的方法取決于使用的計算機語言。不管是哪種語言,一個不可變類必須沒有可以更改其內部數據的方法,也不能以更改其內部數據的方式更改方法(即重寫或重載)。這是兩種方法中比較復雜的一種。另一方面,要從其他可變對象創建不可變對象,通常可以用關鍵字將對象指定為不可變的,例如Java中不可變對象的創建很大程度上依賴于“final”關鍵字,Java中使類不可變的一個快速方法是聲明該類及其所有方法和數據成員,最后。類似的策略也可以在C中使用“const”關鍵字。但是,根據類內容的不同,這些方法可能不是最好的方法。一般來說,通過仔細維護對象的內部數據,通常可以使對象不可變。使用關鍵字(如上面的示例)創建不可變的對象通常是非常多的比編寫一個不可變的整個類容易,但是使用這種方法也有其危險性當以這種方式顯式地指定一個不可變的對象時,程序員必須首先確保所有適當的屬性和數據都已被合并到該對象中,尤其是當它缺少一個重要的信息時。如果一個對象是可變的,但是需要正確地創建不可變的數據,那么在創建可變對象之前,必須先初始化不可變的數據。不可變的對象總是不可變的,無論它們是數據值還是大對象,通常情況下,一個不可變的對象在創建之后就不能變為可變的,盡管有時它們可能被復制為可變對象。通常可以假定一個不可變對象及其任何副本也是不可變的,這可以防止數據或內存問題
-
發表于 2020-08-06 20:38
- 閱讀 ( 694 )
- 分類:電腦網絡