اصل Open/Closed

Open/Close Principle (OCP)

هر کلاس باید قابل توسعه باشد ولی تغییر نکند.

ضمانت می‌کند که کلاس ها قابل ارث بری و استفاده هستند ولی نباید از بیرون قابل تغییر باشند.

به عنوان مثال بدون اینکه لگو را عوض کنیم می توانیم با آن هر چیزی که می خواهیم را توسعه بدهیم!

یعنی کدتان نباید مثل یک دیوار آجری باشد که برای تغییر حتماً باید خراب شود!

مثال

فرض کنید یک کلاس برای محاسبه Damage سربازان مختلف داریم.

همان طور که می بینید با اضافه شدن سربازان جدید به تعداد خط های کدمان اضافه می شود.

https://gist.github.com/smkplus/5e640357f5390b57806d4507b1d75529

به جای اینکه با if , else یا switch نوع کلاس ها را بررسی کنیم می توانیم تعاریف را داخل خود کلاس ها Encapsulate کنیم.

https://gist.github.com/smkplus/a76f2475aa1fde6092de7e97c38674bb