الگوریتم های MVC
الگوهای طراحی نرم افزار، روشهای طراحی استانداردی هستند که با استفاده از آنها یک نرمافزار تولید می شود. با در نظر گرفتن این روشها که اصطلاحا به آنها معماری نرم افزار نیز گفته می شود، تا جای ممکن ریسک طراحی نرم افزار پایین آمده و از طرفی در آینده درک ساختار آن راحتتر میشود.
در تولید واسط کاربری به شیوه سنتی، تولیدکنندگان برای ایجاد ظاهر سایت (قالب) از پنجره، کنترلهای کاربر، یا صفحه استفاده میکردند و سپس همه کد منطقی (بررسی رویداد، مقداردهی اولیه و مدل داده و …) را در قسمت code behind مینویسند و از اینرو اساساً کد به عنوان قسمتی از همان کلاس محسوب میشد.
این روش، مقدار کلاس نمایش را افزایش میدهد و یک وابستگی شدید بین UI و منطق اتصال داده و عملیات کدنویسی شده ایجاد میکند. در این وضعیت هیچ دو توسعه دهندهای نمیتوانند روی بخش نمایش یک صفحه به طور همزمان کار کنند و تغییرات یک توسعهدهنده ممکن است، باعث تغییر در کد دیگری گردد.
بنابراین همه چیر در یک جا قرار میگیرد که این مسئله کاملاً با قابلیت نگهداری ، توسعهپذیری ، و قابلت تست نرم افزار مغایرت دارد. بنابراین اگر شما به این مسئله از بالا نگاه کنید، خواهید دید که این مشکل به جهت ارتباط بسیاز زیاد بین آیتم های ذیل بوجود آمده است :
- نمایش (UI)
- مدل (نمایش داده در UI)
- کد (رسیدگی به رویدادها، اتصال داده و منطق کسب و کار، و کلیه عملیات برنامه نویسی شده)
تعریف کد در هر الگویی متفاوت است. اگرچه نمایش و مدل با تعریف یکسان در همه الگوها مورد استفاده قرار میگیرد. اگر به دو کارکتر اول در همه الگوهای فوق نگاهکنید، دو کارکتر مدل و نمایش یکسان هستند که نشاندهنده Model و View میباشند.
ولی با این حال همه این الگوها متفاوتند و هدف مشترک همه آنها “تفکیک وظایف” میباشد. این الگوها اجازه میدهند تا برنامههای کاربردی را با کمترین اتصال، ایجاد نماییم. سه الگوی طراحی MV* وجود دارد که شامل MVC، MVP و MVVM می باشد. از این معماری ها در تکنولوژی های متعددی استفاده می شود.
الگوی MVC
MVC مخفف Model-View-Controller بوده و الگوی طراحی نرم افزار می باشد که در دهه ی ۱۹۷۰ معرفی شد. الگوی MVC باعث جدایی برخی از مفاهیم شد یعنی مدل و منطق کنترلکننده از رابط کاربری یا همان نما جدا شدند. در نتیجه نگهداری و آزمودن برنامهکاربردی سهل و ساده شد. الگوی طراحی MVC ، برنامههای کاربردی را به سه حوزه ی اصلی تقسیم می کند:
- مدل: مدل شامل مجموعه ای از کلاسها می باشد که منطق کار را مشخص می کند، به این معنا که مدل کار و داده ها به عملیات که همان مدل داده می باشد دسترسی دارند. مدل همچنین قوانین کار برای داده ها را نیز مشخص می کند، به عبارت دیگر چگونگی تغییر و دستکاری داده را مشخص مینماید.
- نما: نما نشان دهنده ی کامپوننت های واسط کاربری از قبیل CSS، jQuery، html و غیره می باشد. نما تنها مسئول نمایش دادههایی می باشد که به عنوان یک نتیجه از سمت کنترلکننده دریافت میشود. نما همچنین مدل را به واسط کاربری تبدیل میکند.
- کنترلکننده: کنترلکننده، مسئول پردازش درخواست های ورودی می باشد که ورودی های کابر را از طریق نما دریافت کرده و سپس داده های کاربر را به کمک مدل، پردازش می کند و نتیجه را مجددا به نما باز می گرداند. معمولا کنترلکننده به عنوان هماهنگ کننده ای بین نما و مدل عمل می کند.
امروزه این الگو در بسیاری از چارچوبهای محبوب مانند Ruby on Rails، Spring Framework، Apple iOS Development و ASP.NET MVC مورد استفاده قرار می گیرد.
الگوی MVP
این الگو مشابه با الگوی MVC می باشد که در آن کنترلکننده با یک نمایشدهنده جایگزین شده است. این الگوی طراحی نرم افزار یک برنامهکاربردی را به سه قسمت تقسیم می کند:
- مدل: مدل شامل مجموعه ای از کلاسها می باشد که منطق کار را مشخص می کنند، مدل همچنین قوانین کار برای دادهها را نیز مشخص می کند، به عبارت دیگر مشخص میکند که چگونه باید داده تغییر و دستکاری گردد.
- نما: نما نشان دهنده ی کامپوننت های واسط کاربری از قبیل CSS، jQuery، html و غیره می باشد. نما تنها مسئول نمایش دادههایی می باشد که به عنوان یک نتیجه از سمت نمایشدهنده دریافت میشود. نما همچنین مدل را به واسط کاربری تبدیل میکند.
- نمایشدهنده: نمایشدهنده به نیابت از نما مسئول مدیریت تمام رویدادهای واسط کاربری میباشد که ورودی کاربران را از طریق نما دریافت کرده و سپس آنها را با کمک مدل، پردازش میکند و نتایج را به نما بازمیگرداند. بر خلاف نما و کنترلکننده، نما و نمایشدهنده کاملا از یکدیگر جدا بوده و از طریق یک رابط با یکدیگر ارتباط برقرا می کنند. همچنین نمایشدهنده مانند کنترلکننده رفت و آمد درخواست های ورودی را مدیریت نمی کند.
این الگو نیز توسط برنامههای کاربردی ASP.NET Web Form که نیاز به ایجاد آزمون های واحد و خودکار برای صفحات دارای کد خود دارند نیز استفاده می شود. در برنامههای کاربردی ویندوزی نیز استفاده می شود. نکات کلیدی در مورد الگوی MVP:
- کاربر با نما تعامل می کند
- رابطه ی یک-به-یک بین نما و نمایشدهنده وجود دارد. یعنی یک نما تنها به یک نمایشدهنده و نه بیشتر، نگاشت شده است.
- نما دارای مرجعی برای نمایشدهنده می باشد اما برای مدل مرجعی ندارد.
- رابطه ی دو طرفه بین نما و نمایشدهنده وجود دارد.
الگوی MVVM
MVVM مخفف Model-View-View Model می باشد. این الگو از اتصال داده دو سویه بین نما و مدلِ نما پشتیبانی می کند. الگوی MVVM انتشار خودکار تغییرات را در حالت مدلِ نما به نما میسر می کند. معمولا مدلِ نما از الگوی ناظر برای اطلاع رسانی تغییرات ایجاد شده در مدلِ نما به مدل استفاده می کند.
- مدل: مدل شامل مجموعه ای از کلاسها می باشد که منطق کار را مشخص می کنند، مدل همچنین قوانین کار برای دادهها را نیز مشخص می کند، به عبارت دیگر مشخص میکند که چگونه باید داده تغییر و دستکاری گردد.
- نمایش: نما نشان دهنده ی کامپوننت های واسط کاربر از قبیل CSS، jQuery، html و غیره می باشد. نما تنها مسئول نمایش دادههایی می باشد که از به عنوان یک نتیجه از سمت مدلِ نما دریافت میشود. نما همچنین مدل را به واسط کاربری تبدیل میکند.
- مدلِ نمایش: مدلِ نما مسئول نمایش متدها، دستورات و دیگر خصوصیتهایی است که به حفظ حالت نما کمک کرده، مدل را به عنوان نتیجه عملیات انجام شده بر روی نما تغییر داده و رویداد ها را در نما ایجاد می کند.
این الگو معمولا توسط WPF، Silverlight، Caliburn، nRoute و غیره استفاده میشود. نقاط کلیدی در مورد الگوی MVVM :
- کاربر با نما در تعامل است.
- رابطه ی چند-به-یک بین نما و مدلِ نما وجود دارد. به عبارت دیگر چند نما می تواند به یک مدلِ نما ، نگاشت شود.
- نما دارای یک مرجع به مدلِ نما می باشد اما مدلِ نما هیچ اطلاعاتی در مورد نما ندارد.
- از اتصال داده دو سویه بین نما و مدلِ نما پشتیبانی می کند.
طراحان و توسعه دهندگان وبسایت
شرکت طراحی سایت در کرج w3developers با سابقه بیش از 7 سال در این حوزه آماده خدمت رسانی به شما صاحبان محترم کسب و کار هاست. اگر قصد راه اندازی یک وبسایت و یا بستر بازاریابی در اینترنت را دارید، با تماس بگیرید و ایده های تبلیغاتی خود را مطرح کنید سعی بر این داریم تا هموار ترین مسیر تبلیغات اینترنتی را با هم پیش بگیریم.





دیدگاه خود را ثبت کنید
مایلید به گفتگو بپیوندید؟ما دوست داریم شما هم در این بحث شرکت کنید!