Java與模式 不變模式 Immutable pattern發(fā)布者:本站 時(shí)間:2020-05-06 15:05:22
不變模式可增強對象的強壯性(robustness)。不變模式允許多個(gè)對象共享某一對象,降低對該對象進(jìn)行并發(fā)訪(fǎng)問(wèn)的同步化開(kāi)銷(xiāo)。如果需要修改一個(gè)不變對象的狀態(tài),就需要建立一個(gè)新的同類(lèi)型對象,并在創(chuàng )建時(shí)將這個(gè)新的狀態(tài)存儲在新對象里。
不變模式之設計一個(gè)類(lèi)。一個(gè)類(lèi)的內部狀態(tài)創(chuàng )建后,在整個(gè)生命期內都不會(huì )發(fā)生變化時(shí),這個(gè)類(lèi)被稱(chēng)為不變類(lèi)。這種使用不變類(lèi)的做法叫作不便模式。
弱不變模式:一個(gè)類(lèi)的實(shí)例狀態(tài)不可改變,但是子類(lèi)的實(shí)例具有可能會(huì )變化的狀態(tài)。
對象沒(méi)有任何方法可以修改對象的狀態(tài)
所有的屬性都應該是私有的
對象所引用的其他對象如果是可變對象的話(huà),必須設法限制外界對這些對象的訪(fǎng)問(wèn),以防止外界修改這些對象。如果可能,應該盡量在不變對象內部初始化這些被引用到的對象,而不要在客戶(hù)端初始化。如果必須在 客戶(hù)端初始化,就應該考慮在不變對象初始化的時(shí)候,適用這個(gè)可變對象的復制。
強不變模式:一個(gè)類(lèi)的實(shí)例不可改變,子類(lèi)的實(shí)例也不可改變
所有的弱不變模式的條件(必選)
類(lèi)所有的方法都應當是final,這樣這個(gè)類(lèi)的子類(lèi)不能夠換掉此類(lèi)的方法(2,3選項必選一個(gè))
這個(gè)類(lèi)本身就是final的,不存在子類(lèi)(2,3選項必選一個(gè))
優(yōu)點(diǎn):
易維護,避免程序錯誤
線(xiàn)程安全
缺點(diǎn):
如果需要修改狀態(tài),必須修建對象,可能造成資源浪費。
選擇我們,優(yōu)質(zhì)服務(wù),不容錯過(guò)
1. 優(yōu)秀的網(wǎng)絡(luò )資源,強大的網(wǎng)站優(yōu)化技術(shù),穩定的網(wǎng)站和速度保證
2. 15年上海網(wǎng)站建設經(jīng)驗,優(yōu)秀的技術(shù)和設計水平,更放心
3. 全程省心服務(wù),不必擔心自己不懂網(wǎng)絡(luò ),更省心。
------------------------------------------------------------
24小時(shí)聯(lián)系電話(huà):021-58370032