اگر بخواهید اشیاء بیرون از کلاس نتوانند هر مقداری را برای property کلاس شما تعیین این الگوی طراحی بسیار کارآمد است. مزیت دیگر استفاده از این الگوی طراحی بالا رفتن maintainability کدهای شما است برای مثال فرض کنید شما می خواهید در یک کلاس، از یک فیلد از نوع boolean برای lock گذاشتن در سطح کلاس استفاده کنید، بجای اینکه این فیلد را public تعریف کنید آن را private کنید و با متدهای Accessor به آنها دسترسی دهید:
private boolean lock = false;
public boolean isLock() {
return lock;
}
public void setLock(boolean lock) {
this.lock = lock;
}
هر شئی که بخواهد این کلاس را lock کند کافی است متد setLock با پارامتر true را فراخوانی کند.
حال فرض کنید در طول زمان توسعه نرم افزار 10 کلاس مختلف با استفاده از متد setLock این کلاس را lock کرده یا از حالت lock خارج کرده باشند و شما می خواهید در زمان lock شدن کلاس چند اتفاق دیگر نیز رخ دهد (برای مثال در سیستم مونیتورینگ lock شدن ها ثبت شود)، استفاده از الگوی طراحی Accessor Methods این مزیت را برای شما بوجود آورده که با تغییر متد setLock و بدون تغییر در 10 کلاسی که به کلاس شما وابستگی دارند تغییرات مورد نظر خود را اعمال کنید:
public void setLock(boolean lock) {
this.lock = lock;
MonitoringService.log(monitoringData);
}
اگر شما فیلد lock را public کرده بودید و آن 10 کلاسی که می خواستند از فیلد lock استفاده کنند بصورت زیر این کار را می کردند:
obj.lock = true;
آنگاه برای اعمال تغییر مورد نظر در سیستم باید یک refactoring سنگین برروی 11 کلاس انجام می دادید.