getter/setter چیست ؟
سلام توسعه دهندگان گرامی در این مقاله به بررسی getter/setter و کلاس Pojo می پردازیم و علت استفاده از این کلاس های را معماری های مختلف توضیح می دهیم در ادامه با ما همراه باشید تا متوجه شوید getter/setter چیست ؟ و به چه علت از getter/setter برای سازماندهی به داده ها استفاده می شود.
getter/setter چیست ؟
اگر بخواهیم در چند جمله ساده بیان کنیم که getter/setter چیست در واقع getter به منظور get یا گرفتن مقدار است و setter به منظور set یا قرار دادن است با استفاده از استاندارد getter/setter می توان داده ها را استاندارد کرد و راحتر به داده دسترسی داشته یا آنها را تغییر داد.
getter ها متدی هایی هستند برای گرفتن یک مقدار یا value و setter ها تنظیم کننده مقدار یا value ها هستند سوالی اصلی این است getter/setter نام های مختلفی دارند یکی از آن نام ها accessors است و دیگری POJO این نام بیشتر در زبان جاوا معروف است.
چرا باید از getter/setter استفاده کنیم ؟
فایده اول Encapsulation یا کپسوله سازی است باعث میشه یک مقدار امنیت داده بالا برود تا امکان inject داده در run time به وجود نیاید و مدیریت حافظه را فوق العاده راحت می کند چون داده ها دیگر پخش و پلا نیستند بلکه در یک مدل داده ای قرار دارند در ادامه برخی از فواید آن را لیست می کنیم.
فواید Getter/Setter
- Encapsulation
- ایجاد مدل داده ای (DataModel)
- مدیریت حافظه بهتر در برخی موارد
- برای debugging فوق العاده است !
- امکان بررسی شرط منطقی وجود دارد.
معایب Getter/Setter
- امنیت خاصی را تامین نمی کند ! (امنیت صفر در ادامه توضیح مدهیم.)
- استفاده بیش از حد از حافظه
در بالا هم گفتیم کپسوله سازی می کند و هم گفتیم امنیت ندارد در واقع Getter/Setter خیلی سال است که نباید ازش استفاده شود دلایل خیلی زیاد مختلفی هم براش هست ولی به علت اینکه کار برنامه نویس را ساده می کند همه به صورت اتوماتیک آن را Generate می کنند و در پروژه هایشان استفاده می کنند. کپسوله سازی داده اصلا اینطوری نیست که کد خاصی رو بردارن تبدیل کنند , داده های شما همیشه در معرض خطر هست به همین علت به getter/setter لقب شیطان داده اند.
به جای Getter/Setter از چی استفاده کنیم ؟
- column
- Lombok
Data Model چیست ؟
این مقاله هم به پایان رسید.
موفق و پیروز باشید.
سلام : ممنون از مطالب خوبتون
میشه نحوه استفاده از
column
Lombok
رو آموزش بدید.