GRASP ها بیشتر اصل (principle) هستند تا الگو (pattern)؛ یعنی به کاربرد یا حوزهی خاصی تعلق ندارد و در سناریوهای مختلف قابل استفاده هستند. الگوهای GoF، راه حلِ مسائلِ تکرارشوندهی طراحی هستند و هر یک در کاربرد یا حوزهای خاص بهکار میآیند. پس به نوعی GRASP سطح بالاتر از GoF هست.
مثال از GoF:
الگوی طراحی Strategy، الگوی طراحی Composite، الگوی طراحی Adapter، الگوی طراحی Proxy و ...
مثال از GRASP:
Creator: مسئولیت ساختن اشیای یک کلاس را به چه کلاسی بسپاریم؟ کلاس A مسئول ساختن اشیای کلاس B هست اگر یک یا چند تا از شرایط زیر برقرار باشد:
-
A شامل اشیای B باشد
-
A اشیای B را جایی ثبت میکند (پایگاهداده، فایل و ...)
-
A از اشیای B زیاد استفاده میکند.
-
A شامل اطلاعاتی هست که برای ایجاد اشیای B لازم است
Expert: هر مسئولیت (کار) به کلاسی سپرده شود که اطلاعات لازم برای انجام آن کار را داشته باشد.
و ...