# هدف
الگوی معماریِ MVC، سه مفهوم ذخیرهسازی، نمایش و بهروزآوری دادهها را به سه مؤلفه تقسیم میکند و به طوری که هر کدام به طور مجزا قابل تست باشند.
- با توجه به ساختار کلاس MVC، کلاسهای View , Controller به کلاس Model وابستهاند و کلاس مدل به هیچ کلاسی وابسته نیست.
- مدل MVC پایهترین الگو برای جداسازی منطق واسط کاربری و منطق کاریست.
اطلاعات بیشتر در ویکیپدیا
- منطق UI بیشتر از منطق Business تغییر میکند، بنابراین اگر قرار باشد این دو منطق با هم کار کنند، هر وقت که خواستیم رابط کاربری را تغییر دهیم باید شیءای را تغییر دهیم که در آن منطق Bussiness هم وجود دارد. و پس از هر تغییر کوچک در UI مجبوریم تمام Business logic را تست کنیم.
- میخواهیم دادهها را به شکلهای مختلفی نمایش دهیم. (رابطهای گرافیکی متفاوت)
- طراحی رابط کاربری دو قسمت داد ۱- نمایش (دریافت دادهها و نمایش آنها) ۲- بهروزآوری (تغییر دادهها که قسمت منطق کاری محسوب میشود.)
- انجام تست خودکار روی رابط کاربری بسیار سختتر از تست خودکار روی منطق کاریست.
- حاوی تمام دادهها
- چگونگی رفتار مدل
- مدل به View و Controller ارجاع ندارد و تنها دستورات این دو کلاس را پردازش میکند.
- ارجاعی به کنترولر ندارد و تنها دستورات کنترولر را پردازش میکند.
- ارجاعی به مدل دارد و دادهها را از مدل میگیرد تا آنها را نمایش دهد.
- هم به View و هم به Model اشاره میکند.
با جدا کردن سه مفهوم، متعاقباً پیچیدگی نیز بیشتر میشود.
این الگو، مدل و رابط گرافیکی را از هم جدا می کند و متعاقباً با هر تغییر در رابط گرافیکی باید تغییر در مدل ایجاد کنیم و بالعکس. در صورتی که تعداداین تغییرات خیلی بالا باشد، هزینهٔ چنین تغییراتی زیاد میشود و راه حل این است که تغییرات متعدد را بستهبندی کنیم و در یکجا ارسال کنیم.
در این الگو، View و Controller با هم ترکیب میشوند.
- Observer
وقتی کاربر درجهٔ حرارت را به فارنهایت وارد کرده و دکمهٔ تبدیل به سانتیگراد را میزند آنگاه
- کنترولر event مربوط به Button تبدیل درجه را دریافت میکند.
- کنترولر ورودی را به مدل ارسال کرده و درخواست تبدیل به سانتیگراد را ارسال میکند.
- مدل تبدیل را انجام میدهد.
- کنترولر از View درخواست میکند تا نتیجه را نشان دهد.
- کلاس View نتیجه را از مدل دریافت می کند.
- کلاس View نتیجه را نمایش میدهد.