اشیاء تغییرناپذیر می توانند در برنامه های چند رشته ای مفید باشند. رشته های متعدد می توانند بر روی داده های نمایش داده شده توسط اشیاء تغییرناپذیر بدون نگرانی از تغییر داده ها توسط رشته های دیگر عمل کنند. بنابراین، اشیاء تغییرناپذیر نسبت به اشیاء قابل تغییر، ایمنتر از موضوعات در نظر گرفته میشوند.
اشیاء تغییرناپذیر چیست؟
حداکثر اتکا به اشیاء تغییرناپذیر بهعنوان یک استراتژی مناسب برای ایجاد کد ساده و قابل اعتماد پذیرفته شده است. اشیاء تغییرناپذیر به ویژه در کاربردهای همزمان مفید هستند. از آنجایی که آنها نمی توانند حالت را تغییر دهند، نمی توان آنها را با تداخل نخ خراب کرد یا در حالت ناسازگار مشاهده کرد.
کدام اشیا را باید تغییرناپذیر نامید؟
اشیاء تغییرناپذیر به سادگی اشیایی هستند که وضعیت آنها (داده های شی) پس از ساخت نمی تواند تغییر کند. نمونه هایی از اشیاء تغییرناپذیر از JDK عبارتند از String و Integer. اشیاء تغییرناپذیر برنامه شما را بسیار ساده می کنند، زیرا ساخت، آزمایش و استفاده از آنها ساده است.
چگونه یک شی غیرقابل تغییر را پیاده سازی می کنید؟
برای ایجاد یک شیء تغییرناپذیر باید چند قانون ساده را دنبال کنید:
- هیچ روش تنظیم کننده اضافه نکنید.
- همه فیلدها را نهایی و خصوصی اعلام کنید.
- اگر یک فیلد یک شی قابل تغییر است، کپی های دفاعی از آن را برای متدهای دریافت کننده ایجاد کنید.
- اگر یک شیء قابل تغییر ارسال شده به سازنده باید به یک فیلد اختصاص داده شود، یک کپی دفاعی از آن ایجاد کنید.
کجا باشیماز کلاس تغییرناپذیر در جاوا استفاده کنید؟
کلاس های تغییرناپذیر برنامه نویسی همزمان را آسان تر می کند. کلاسهای غیرقابل تغییر مطمئن میشوند که مقادیر در میانه عملیات بدون استفاده از بلوکهای همگامسازی شده تغییر نمیکنند. با اجتناب از بلوک های همگام سازی، از بن بست جلوگیری می کنید.