مفهوم SOLID در ASP.NET MVC

SOLID یکی از اصول برنامه نویسی شی گرا است , و به ما در نوشتن نرم افزاری با کیفیت تر کمک می رساند.در این مقاله این مفهوم را شرح خواهیم داد

مفهوم SOLID در ASP.NET MVC

 SOLIDیکی از اصول برنامه نویسی شی گرا است , و به ما در نوشتن نرم افزاری با کیفیت تر کمک می رساند.

solid  سرنام کلمات زیر است :

Single responsibility

Open-closed

Liskov substitution

Interface segregation

Dependency inversion

S: Single Responsibility

این مفهوم تقریبا با مفهوم M یا Model در MVC یکسان است .هر مدل در MVC بیانگر یک موجودیت و یک وظیفه مربوط به این موجودیت است .یعنی هر کلاسی بهتر است فقط یک کار انجام دهد

O: Open / Close

این حرف در Solid بیان میکند که کلاس ها را طوری ایجاد کنید که امکان گسترش آنها وجود داشته باشد ولی برای ویرایش شدن بسته باشند.بسته بودن به این معنی است که نیازی به تغییر کدهای کلاس نباشد.این کار در برنامه نویسی شی گرا باعث کاهش ارتباطات بین کلاس ها و ماژول ها می شود.برای توسعه دادن کلاس هم کلاس های دیگر اضافه کنید نه اینکه کد کلاستان را تغییر دهید.

L مخفف Liskov Substitution Principle یا LSP به مفهوم اینکه هر کلاسی که از کلاس دیگر ارث بری میکند هرگز نباید رفتار کلاس والد را تغییر دهد.

I مخفف Interface Segregation Principle با ISP به مفهوم اینکه بهتر است به جای یک اینترفیس بزرگ چند اینترفیس کوچک داشته باشید.وقتی اینترفیس شما بزرگ است و یک کلاس آن را پیاده سازی می کند ممکن است به بعضی از این متدها که در اینترفیس بزرگ بوده است واقعا نیاز نداشته باشدو این متد ها در کلاس قابل استفاده نباشند. اما وقتی یاینترفیس بزرگ را به اینترفیس های کوچک می شکنیم هر کلاس دقیقا  اینترفیس (Interface)خاصی را که نیاز داشته باشد پیاده سازی می کند. با این روش اگرچه تعداد اینترفیس ها بیشتر می شوند و ممکن است تکرار رخ دهد ولی چون منطق برنامه ما در اینترفیس ها اجرا نمی شود میتوان این مسئله را نادیده گرفت. در نهایت با رعایت این اصل امکان اشکالزدایی و بررسی کد ها سرعت بهتری پیدا می کند

D مخفف Dependency inversion principle le و مفهومی است که از وابستگی مستقیم کلاس های سطح بالا به کلاس های سطح پایین جلوگیری میکند. به این منظور که اگر کلاسی که از کلاس های دیگر استفاده می کند وابستگی مستقیمی با کلاس های سطح پایین داشته باشد سبب بروز این مشکل خواهد شد.به این صورت که  اگر کلاس دیگری به مجموعه افزوده شود اجبارا کلاس سطح بالا نیز بایستی تغییر کندD  جلوی این مشکل را می گیرد 

دانلود نسخه ی PDF این مطلب