0 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)
برچسب گذاری دوباره قبل توسط

الگوی طراحی Accessor Methods (تمام متغییر های در سطح کلاس باید private باشند و با استفاده از متدهای getter و setter خارج از کلاس قابل دسترسی باشند) بعنوان یکی از قدیمی ترین الگوهای طراحی برنامه نویسی شئ گرا شناخته می شود، مزیت رعایت این الگوی طراحی چیست؟

1 پاسخ

+3 امتیاز
قبل توسط (1.1هزار امتیاز)

اگر بخواهید اشیاء بیرون از کلاس نتوانند هر مقداری را برای 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 کلاس انجام می دادید.

سوالات مشابه

0 امتیاز
0 پاسخ 526 بازدید
+2 امتیاز
2 پاسخ 3.3هزار بازدید
0 امتیاز
1 پاسخ 1.7هزار بازدید
+1 امتیاز
1 پاسخ 1.7هزار بازدید
+2 امتیاز
1 پاسخ 1.0هزار بازدید
+1 امتیاز
2 پاسخ 4.2هزار بازدید
+1 امتیاز
1 پاسخ 2.4هزار بازدید
...