در مورد اینکه تفاوت بین الگوی معماری و الگوی طراحی چیست، سردرگمی زیادی وجود دارد، چرا که ارتباط نزدیکی با هم دارند.برخی از سؤالات رایجی که با آنها روبرو می شویم عبارتند از: آیا این دو مفهوم یکسان هستند یا متفاوت؟ و اگر متفاوت هستند، این تفاوت چقدر است؟ همچنین سؤالات دیگری مطرح می شود مانند اینکه هر دو چگونه در یک پروژه قرار می گیرند و سپس معماری کلی برنامه چیست؟
بیایید در مورد اینها صحبت کنیم و شباهت ها و تفاوت ها را درک کنیم:
الگوهای معماری از نظر دامنه گسترده تر از الگوهای طراحی هستند. الگوهای طراحی وظایف نرم افزاری بسیار خاصی را ارائه می دهند که به عنوان الگوی معماری راه حلی برای مشکلات تجاری است.به عبارت دیگر الگوی معماری بیشتر بر نمای انتزاعی و نگاه از بالا بر ایده تمرکز میکند در حالی که الگوی طراحی بر نمای اجرایی و خرد تمرکز میکند.
پیاده سازی الگوهای طراحی در سطح واحد های خرد تعریف می شوند، در حالی که الگوهای معماری در سطح بالایی تعریف می شوند.برای مثال، پیادهسازیهای مختلف الگوی Factory یا Builder ممکن است در پروژههای مختلف بسیار شبیه به هم به نظر برسند. اما همان الگوی معماری می تواند در پروژه های مختلف بسیار متفاوت باشد.
یک الگوی معماری را می توان با استفاده از بسیاری از الگوهای طراحی پیاده سازی کرد. بین الگوی معماری و الگوی طراحی یک تا چند رابطه وجود دارد.
برای مثال، پیادهسازی MVP را میتوان به روش زیر انجام داد: مدلها را میتوان با استفاده از الگوی Factory و Builder ساخت. ارائه دهنده را می توان با استفاده از Observer و الگوی نما ساخت. نماها را می توان با استفاده از Factory و Singleton ساخت.
الگوی معماری، معماری اپلیکیشن نیست. الگوی معماری دستورالعملها و قوانینی را ارائه میکند تا برنامه را در سطح پروژه/راهحل قابل نگهداریتر، اتصال ضعیف و توسعهپذیرتر کند.الگوهای طراحی نیز تا حدودی انجام می شوند، اما بیشتر در سطح ماژول یا جزء انجام می شوند. جایی که به عنوان Application Architecture معماری کامل اپلیکیشن است که از الگوی معماری در کنار سایر الگوها و رابط های طراحی استفاده خواهد کرد.
برخی از الگوهای معماری محبوب عبارتند از:
MVC
MVP
MVVM
VIPER
Three-tier/Multi-tier
Dependency Injection Architectural pattern
23 الگوی طراحی محبوب وجود دارد که با نام Gang of Four (GOF) نیز شناخته می شوند و به سه دسته تقسیم می شوند: الگوی ایجادی، الگوی ساختاری و الگوی رفتاری.
نتیجه
به طور خلاصه می توان گفت که الگوی معماری سطح بالاتری از انتزاع طراحی نرم افزار است و الگوی طراحی راه حلی برای مشکلات سطح ماژول خاص ارائه می دهد.