در طول زمان برنامهنویسان برای توسعهی نرمافزارها با مشکلات مختلفی مواجه میشدند. بسیاری از این مشکلات مستقل از زبانهای برنامهنویسی و مشابه هم بودند. بنابراین برای حل این مشکلات راهحلهای مختلفی ارائه شد که به بهترین روش حل و رفع این مشکلات الگوهای طراحی یا Design Pattern میگویند. به عبارت دیگر مجموعهای از بهترین راهحلهای مشکلات متداول در فرآیند برنامهنویسی نرمافزار را الگوهای طراحی مینامند. الگوهای طراحی برای حل مشکلات رایج در برنامهنویسی شیگرا به وسیلهی برنامهنویسانی باتجربه توسعه داده شدهاند. الگوهای طراحی جزو معماریهای نرمافزاری نیستند و فقط شیوهای صحیح از کدنویسی شیگرا را ارائه میدهند. بنابراین این الگوها فقط در قلمرو کدنویسی شیگرا وارد میشوند و مستقل از زبانهای برنامهنویسی هستند.