الگوهای طراحی صرفا روشهایی برای نظم دادن و ساختار بخشیدن به Applicationها هستند. وجودشون به هیچ وجه الزامی نیست ولی مفید هستند مگر اینکه روش ما روش بهتری برای خودمون و Applicationامون باشه.
MVC یکی از الگوهای پرکاربرد هست که تقریبا جوابگوی هر نوع Applicationای می تونه باشه و مخفف سه کلمه View ، Model و Controller هست.
مفهوم MVC براساس جداسازی بخشهای اساسی تعریف شده. به این صورت که کدها رو به سه بخش View، Model و Controller تقسیم کنیم تا کنترل و توسعه کدها به بهترین شکل ممکن انجام بشه.
این سه بخش به این شکل تعریف میشه: کدهایی برای ارتباط با دیتابیس، کدهایی برای ساختن خروجی و کدهایی برای کنترل و دسترسی به این دو بخش.
توضیح دقیقتر این سه بخش به شرح زیر است:

  • Model: کدهایی برای تبادل اطلاعات با دیتابیس. این بخش مثل یک موتور عمل می کنه. هیچ ارتباطی با اتفاقات نداره فقط ازش اطلاعات درخواست می کنیم، از دیتابیس بیرون میکشه و میده.
  • View: کدهایی برای سر هم کردن اطلاعات و ساختن خروجی. این بخش به هیچ عنوان کد منطقی (کد عملیاتی، کدی که کار عملیاتی انجام میده) نداره فقط اطلاعات رو میگیره تحلیل می کنه، تحت قالب قرار میده و به Controller میفرسته تا نمایش داده بشه.
  • Controller: در واقع Controller بقیه کارها رو انجام میده. اینکه چه درخواستی از کاربر رسیده، چه درخواستی از Model باید بشه، اطلاعات گرفته شده از Model چطور باید پردازش بشه، چه Viewای باید انتخاب بشه و چه اطلاعاتی به View باید ارسال بشه.


اگر آشنایی قبلی با MVC نداشتی، این توضیحات یکم گنگ هستند. یک نمونه مثال میزنم. یک سیستم لاگین میخوایم بنویسیم بصورت MVC. از جایی که کاربر نام کاربری و کلمه عبورش رو در فرم وارد می کنه و دکمه ورود رو میزنه.
ابتدا مراحل رو لیست می کنیم:

  • کاربر با زدن دکمه ورود فرم، اطلاعاتش رو به سایت ارسال می کنه و درخواست یا Request برای لاگین رو میده.
  • Controller این درخواست رو میگیره، بررسی میکنه که از چه نوعی هست. نتیجه بررسی این خواهد بود که درخواست از نوع لاگین بوده و به دنبال نام کاربری و کلمه عبور از فرم خواهد بود.
  • Controller اطلاعات فرم رو گرفته، تحلیل کرده و میخواد با اطلاعات دیتابیس مطابقت بده که آیا چنین نام کاربری وجود داره یا نه و کلمه عبورش صحیح هست یا نه. برای این کار Model مناسب برای این کار رو پیدا می کنه، اطلاعات رو بهش میده تا ازش نتیجه بگیره.
  • Model دیتابیس رو چک می کنه و مطابقتی پیدا نمی کنه و این جواب رو به Controller برمیگردونه.
  • Controller این نتیجه رو پردازش می کنه و میفهمه که باید فرم لاگین و پیغام خطا رو به کاربر برگردونه.
  • Controller براساس تحلیلهاش، View مناسب رو پیدا می کنه و اطلاعات قابل نمایش رو به View میده.
  • View یک قالب خام هست که منتظر پر شدن با اطلاعات هست مثلا View فرم لاگین، یک بخش پیغام داره. این بخش با اطلاعاتی که از Controller میاد پر خواهد شد. Controller این پیغام رو فرستاده، View در فرم جایگزین می کنه.
  • View فرم تحلیل شده رو به Controller میفرسته.
  • Controller نتیجه View رو به کاربر میفرسته (چاپ می کنه).


دوستان کاربلد مثال عملی بزنند