JavaRush /Java Blog /Random-TL /Getters at sirang encapsulation
Vadelic
Antas
Пасадена

Getters at sirang encapsulation

Nai-publish sa grupo
Habang nilulutas ang mga problema, nakatagpo ako ng hindi inaasahang pag-uugali ng mga getter. Sa mga lektura dito at maging sa mga getter na nabuo ng IntelliJ IDEA, ang pinakasimpleng scheme ay ginagamit: public final class A { private A field; public A getField() { return field; } public void setField(A field) { this.field = field; } } Kung ang field ay isang primitive na uri o String, na ipinasa ng halaga, kung gayon ang lahat ay maayos, ngunit kung ang bagay ay naipasa sa pamamagitan ng sanggunian, pagkatapos ay lumalabas na sa pamamagitan ng getter maaari kang makakuha ng ganap na access sa field , na nagpapawalang-bisa sa nakatakdang protektadong antas ng pag-access. Kung ang setter ay naglalaman ng anumang validity condition, maaari itong ma-bypass sa pamamagitan ng naturang getter, na lumalabag sa encapsulation at magiging tama na gumawa ng clone ng object upang maiwasan ang problemang ito. Naiintindihan ko na hindi lahat ng mga bagay ay madaling mai-clone, at kung ito ay naiwan sa responsibilidad ng programmer, kung gayon ito ay kakaiba kung bakit walang nabanggit na ito saanman sa mga lektura. UPD: Ang isang getter, bilang isang ideya, siyempre, ay hindi lumalabag sa encapsulation, ngunit dapat itong isulat sa paraang hindi ipagkanulo ang mga prinsipyo ng OOP. Nangangahulugan ito na kung ang isang getter ay gumagawa ng isang bagay, ginagawa nito ito sa paraang hindi ito mababago ng user sa anumang ibang paraan na tinukoy sa klase. Mayroong magandang paraan sa klase ng Mga Koleksyon na gumagawa ng isang read-only na koleksyon. Nagpapataw ito ng ilang iba pang mga paghihigpit, halimbawa, ang imposibilidad ng pag-uuri, ngunit para sa kasong ito ang klase na ito ay mayroong: unmodifiableSortedSet unmodifiableSortedMap at ilan pa, para sa higit na kaginhawahan. public static Collection unmodifiableCollection(Collection c)
Mga komento
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION