Immutable objects ay maaaring maging kapaki-pakinabang sa multi-threaded applications. Maaaring kumilos ang maramihang mga thread sa data na kinakatawan ng mga hindi nababagong bagay nang walang pag-aalala sa data na binago ng ibang mga thread. Samakatuwid, ang mga hindi nababagong bagay ay itinuturing na mas ligtas sa thread kaysa sa mga nababagong bagay.
Ano ang silbi ng hindi nababagong mga bagay?
Ang pinakamataas na pag-asa sa mga hindi nababagong bagay ay malawakang tinatanggap bilang isang mahusay na diskarte para sa paggawa ng simple, maaasahang code. Ang mga hindi nababagong bagay ay partikular na kapaki-pakinabang sa mga sabay-sabay na aplikasyon. Dahil hindi nila mababago ang estado, hindi sila maaaring masira ng interference ng thread o maobserbahan sa isang hindi pare-parehong estado.
Aling mga bagay ang dapat tawaging hindi nababago?
Ang mga hindi nababagong bagay ay mga bagay lamang na ang katayuan (data ng bagay) ay hindi maaaring magbago pagkatapos gawin. Kasama sa mga halimbawa ng mga hindi nababagong bagay mula sa JDK ang String at Integer. Ang mga hindi nababagong bagay ay lubos na nagpapasimple sa iyong programa, dahil ang mga ito ay: simpleng gawin, subukan, at gamitin.
Paano mo ipapatupad ang isang hindi nababagong bagay?
Upang lumikha ng hindi nababagong bagay kailangan mong sundin ang ilang simpleng panuntunan:
- Huwag magdagdag ng anumang paraan ng setter.
- Ideklarang final at pribado ang lahat ng field.
- Kung ang isang field ay isang nababagong bagay, lumikha ng mga nagtatanggol na kopya nito para sa mga pamamaraan ng getter.
- Kung ang isang nababagong bagay na ipinasa sa constructor ay dapat na italaga sa isang field, gumawa ng defensive na kopya nito.
Saan tayogumamit ng hindi nababagong klase sa Java?
Ang
Immutable classes ay nagpapadali sa concurrent programming. Tinitiyak ng mga hindi nababagong klase na hindi mababago ang mga value sa gitna ng isang operasyon nang hindi gumagamit ng mga naka-synchronize na block. Sa pamamagitan ng pag-iwas sa mga block ng pag-synchronize, maiiwasan mo ang mga deadlock.