.علاقه مند به توسعه اپلیکیشن ها موبایل و سمت سرور..عاشق لاراول
برنامه نویسی S.O.L.I.D
Open/Closed Principle
Liskov Substitution Principle
Interface Segregation Principle
Dependency Inversion Principle
solid مخفف چهار اصل بالا است که کی از اصول برنامه نویسی شی گرا می باشد.
خب بریم سراغ معرفی این اصول:
Single Responsibility Principle
خلاصه این اصل به این معنی است که هر کلاس فقط و تنها باید یک وظیفه داشته باشد و برای وظایف دیگر باید از کلاس های دیگر استفاده کند.
به طور مثال فرض کنید که ما یک کلاس Customer داریم که وظیفه اعتبار سنجی مشتریان و درج در دیتا بیس را دارد.
اگر ما در این کلاس وظیفه لاگ کردن هم قرار بدهیم این اصل را زیر پا گذاشته ایم پس یک کلاس loger می سازیم و وظیفه لاگ کردن را به اون کلاس می سپاریم
کلاس Customer بالا کارهایی را انجام می دهد که قرار نیست انجام بدهد. کلاس Customer باید اعتبارسنجی داده های مشتری را انجام بدهد، لایه دسترسی به داده های مشتری را صدا بزند، اما اگر به بلاک catch نگاه کنیم این کلاس همچنین فعالیت های LOGGING را نیز انجام می دهد. در یک جمله ساده این کلاس مسئولیت های زیادی دارد.
Open/Closed Principle
خلاصه این است بدین معنی است که کلاس باید نسبت به تغییرات بسته باشد
به طور مثال بک کلاس خریدار داریم ..بعد ها بر اساس نوع خریدار نقره ای و یا طلایی به آن ها تخفیف می دهیم.ما اجازه نداریم در کلاس اصلی یک شرط بگذاریم و همان جا تخفیف بدهیم
باید دو کلاس مشتق شده از کلاس اصلی قرار بدهیم و همانجا تخفیف بدهیم
به بلاک شرطی “IF” در متد “getDiscount” توجه کنید.
مشکل اینجاست که اگر ما بخواهیم یک نوع مشتری جدید اضافه کنیم باید یک بلاک شرطی “if” دیگر را به متد “getDiscount” اضافه کنیم، به عبارت دیگر ما نیاز داریم که کلاس Customer را ویرایش کنیم.
Liskov Substitution Principle
این اصل مقداری ساده س .اگر کلاس B از C مشتق بشود.در هر کجای کد ما فرزند را جای پدر قرار بدهیم نباید به ما پیغام خطا بدهد
Interface Segregation Principle
در اینتر فیس ها برای جلوگیری از واسط چاق(متد هایی که کاربرد ندارد ولی کاربر باید پیاده سازی کند)فقط متد هایی را نوشت که واقعا کاربرد دارند
Dependency Inversion Principle
کلاس ها نباید به شکل مستقیم بهم ارتباط داشته باشند (راه حل این مشکل می تواند تزریق وابستگی باشد)
مطلبی دیگر از این انتشارات
میخواید بیشتر یاد بگیرید؟ بیاید تا بگم چطوری.
مطلبی دیگر از این انتشارات
جریان چیه؟
مطلبی دیگر از این انتشارات
زبانهای برنامهنویسی که هر تازهکاری باید یاد بگیرد