در برنامه نویسی flat اشتباهات رایجی که در اکثر برنامه های اتفاق می افتد عبارت است از :
Pattern های نرم افزار زبان ، تکنولوژی و یا پلاگینی نیست که قابل نصب بر روی برنامه باشد ، بلکه یک قانون است . قراردادی است برای نوشتن برنامه به زبان های متفاوت از قبیل PHP و …… که انواع pattern های نرم افزارعبارت است از: MVC، HMVC و….
MVC [1]: یکی از مشهورترین pattern های برنامه می باشد که از لهجه های مختلفی ساخته شده است(یعنی می توان به طرق گوناگون دیگری MVC را نوشت).
مدل از data base یا یک web service یا یک سرویس دهنده ، اطلاعات خواسته شده را خوانده و با توجه به روشی که در شکل زیر مشاهده می کنید، به view منتقل می کند و view این data دریافتی را برای کاربر به نمایش می گذارد.
در بعضی از لهجه ها، ممکن است درخواست ارسالی دوباره به کنترلر برگشته و کنترلر آن را به view انتقال دهد.
سمعمولا در این approach که یک approach قدیمی تر است، ذکر شده که مدل همان کار database را انجام می دهد.اما در approach های جدیدتر، تعاریف مختلفی از این مدل شده است که عبارت است :
به عنوان مثال در برنامه های شما یک سری فعالیت های اصلی انجام می شود، که هر vendor یا سازنده یکی از این فعالیت ها را ارائه می دهد از قبیل: ارسال ایمیل، Query زدن، تامین امنیت، چک کردن authentication ، ارسال sms و …..
در تعریف معماری جدید، تمامی component ها برای برنامه های مختلف یکسان است، و منحصر به یک پروژه خاص نمی باشد. و این componentها توسط کنترلر که اصطلاحا به آن چسب گفته می شود، برای برنامه مورد نظر به یکدیگر مرتبط می شوند.
تعریف جدید برنامه با استفاده از MVC ، به این صورت است که یک درخواستی را گرفته و یک سری event را انجام داده و در نهایت یک response ایی را برمی گرداند.
در این مدل، برنامه های تحت وب، مانند یک bundle و یا package ایی می باشند که در خود آن ها مدل و view و controller وجود دارد.به این معنی که در خود آن ها فایل های HTML و CSSوجود دارد و خود کارهای data base را انجام می دهند.
این مدل شامل چندین لهجه است.به عنوان مثال در یکی از لهجه ها، یک MVC مادر وجود دارد که بقیه MVC ها را کنترل می کند که این لهجه بر روی وب بیشتر معنی می دهد.
در وب package ها بر روی برنامه قرار می گیرد(کنترلر بر روی کنترلر برنامه، viewبر روی view برنامه) اما در برنامه های desktop ، package ها با یکدیگر در ارتباطند، به عنوان مثال، کنترلر مدل با کنترلر برنامه در ارتباط است و..
و مدل های دیگر عبارت است از، Model-view-adabter ، Model-view-presenter، Mode view view Model ، observer Pattern، Peresentation-abstraction-control و. Multitier architecture
نکته:در این مدل ها نکته قابل توجه این است که پیچیدگی همیشه بیانگر بهتر بودن مدل نمی باشد و مناسب بودن مدل ها براساس نیاز پروژه تعیین می گردد.
[1] Mode-view-controller