درآمدی بر قانون Open-closed


Open-closed Principle
یک اپلیکیشن از هر نوعی که باشد از مجموعه‌ای از کلاس‌ها، فانکشن‌ها و ماژول‌های مختلف تشکیل شده است و اصلِ Open-closed حاکی از آن است که اپلیکیشن باید به گونه‌ای نوشته شود که دولوپر بتواند به طور مثال یک کلاس را توسعه‌ دهد بدون آنکه کدهای قبلی آن کلاس را دستخوش تغییر سازد که در نهایت این تضمین را ایجاد می‌کند که سورس‌کد بسته به نیازهای آتی اپلیکیشن توسعه یابد بدون آنکه بخش‌های قدیمی را تغییر دهیم چرا که خودِ این مسئله (تغییر کدهای قدیمی) منجر ایجاد باگ خواهد شد.

برای درک بهتر این موضوع، فرض کنیم کاربران وب اپلیکیشن‌مان برای لاگین کردن می‌توانند از نام‌کاربری و رمزعبور خود استفاده نمایند اما پس از مدتی به این نتیجه می‌رسیم که این امکان را در اختیار کاربران بگذاریم تا با اکانت جیمیل خود نیز بتوانند در سایت ثبت‌نام کنند که در چنین شرایطی باید دائم کلاسی که مسئول این کار است را تغییر دهیم تا شرایط مختلف را در آن ببینیم (مثلاً اگر بخواهیم این قابلیت را در نظر بگیریم که کاربران با اکانت گیت‌هاب خود نیز بتوانند در سایت ثبت‌نام کنند، مجدد باید شرط جدیدی داخل این کلاس در نظر بگیریم تا این دست کاربران هم مدیریت شوند.)

این بخش از محتوا مخصوص کاربرانی است که ثبت‌نام کرده‌اند.
جهت مشاهدهٔ این بخش از محتوا لاگین نمایید.
دانلود فایل‌های تمرین

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان
abdalily932320
abdalily932320
۱۳۹۸/۰۷/۰۱
تا اونجایی که من فهمیدم این اصل رو باید زمانی که یک کلاس می خواد یک عمل خاص رو به روش های مختلف انجام بده مد نظر قرار بدیم .
مثلا در این تمرین عمل لاگین به روش های مختلف انجام می شه
مهراد
مهراد توسعه دهنده وب و علاقه‌مند به تکنولوژی
۱۳۹۸/۰۲/۲۸
سلام
ممنون از این دوره آموزشی.
سؤالی برای من بوجود اومده و اون هم اینکه در یک اپ واقعی فهمین و تعیین کردنِ اینکه کاربر می‌خواهد بصورت NormalUser لاگین کند و یا GmailUser، خودش نیاز به if و else دارد (تا بفهمیم بین NormalUser و GmailUser از کدام باید نمونه گرفته و به متد لاگین پاس دهیم).

آیا این ناقض همین اصلِ Open Close نیست ؟