MVC (Model-View-Controller) الگویی در طراحی نرم افزار است که معمولاً برای پیاده سازی رابط های کاربر، داده ها و منطق کنترل استفاده می شود. این بر جدایی بین منطق تجاری نرم افزار و صفحه نمایش تأکید دارد. این "تفکیک نگرانی ها" تقسیم کار بهتر و نگهداری بهتر را فراهم می کند. برخی دیگر از الگوهای طراحی بر اساس MVC هستند، مانند MVVM (Model-View-Viewmodel)، MVP (Model-View-Presenter) و MVW (Model-View-Whatever).
سه بخش از الگوی طراحی نرم افزار MVC را می توان به شرح زیر توصیف کرد:
مدل: داده ها و منطق تجاری را مدیریت می کند. نمایش: دسته بندی طرح و نمایش. کنترلر: دستورات را به مدل و مشاهده قطعات هدایت می کند.
مدل مدل مشخص می کند که برنامه چه داده هایی باید داشته باشد. اگر وضعیت این داده ها تغییر کند، مدل معمولاً به نمای (بنابراین نمایشگر می تواند در صورت نیاز تغییر کند) و گاهی اوقات به کنترل کننده (اگر منطق متفاوتی برای کنترل نمای به روز شده نیاز باشد) اطلاع می دهد.
با بازگشت به برنامه لیست خرید، مدل مشخص میکند که اقلام فهرست شامل چه دادههایی باشد - مورد، قیمت، و غیره - و چه مواردی از قبل موجود هستند.
منظره نمای نحوه نمایش داده های برنامه را مشخص می کند.
در برنامه لیست خرید ما، نمای نحوه ارائه لیست به کاربر را مشخص می کند و داده هایی را برای نمایش از مدل دریافت می کند.
کنترل کننده کنترلر حاوی منطقی است که مدل و/یا نمای را در پاسخ به ورودی کاربران برنامه به روز می کند.
بنابراین، برای مثال، لیست خرید ما میتواند دارای فرمهای ورودی و دکمههایی باشد که به ما امکان میدهد موارد را اضافه یا حذف کنیم. این اقدامات نیازمند بهروزرسانی مدل هستند، بنابراین ورودی به کنترلکننده ارسال میشود، که سپس مدل را بهصورت مناسب دستکاری میکند و سپس دادههای بهروز شده را به view ارسال میکند.
با این حال، ممکن است بخواهید فقط نما را به روز کنید تا داده ها در قالب دیگری نمایش داده شوند، به عنوان مثال، ترتیب آیتم ها را به حروف الفبا یا پایین ترین به بالاترین قیمت تغییر دهید. در این مورد، کنترلکننده میتواند مستقیماً بدون نیاز به بهروزرسانی مدل، این کار را انجام دهد.