۲۳ الگو در ۳ گروه زیر جای گرفتند :
1- الگوهای ایجادی
· (Abstract factory) رابطی برای ساخت فامیلیهایی از اشیاء مرتبط یا وابسته به هم بدون مشخص کردن کلاسهای واقعی آنها تدارک میبیند.
· (Factory method) یک رابط برای ساخت اشیاء تعریف کرده و در عین حال اجازه میدهد تا زیر کلاسها در مورد اینکه چه شیء را نمونه سازی کنند تصمیم بگیرند. در واقع این الگو اجازه میدهد تا نمونه سازی را به زیر کلاسها محول نمود.
· (Builder) فرآیند ساخت یک شیء را از نمایش آن جدا کرده تا بتوان همان فرآیند ساخت را برای ایجاد نمایشهای مختلف بکار برد.
· (Prototype) با استفاده از یک شیء بعنوان نمونه نوع اشیاء جدیدی که بایستی ساخته شوند را مشخص کرده و آن اشیاء را با ساختن کپیهای جدید از این نمونه ایجاد مینماید.
· (Singleton) این اطمینان را حاصل میکند که یک کلاس دارای تنها یک نمونه بوده و دسترسی به آن نمونه را تدارک میبیند.
2- الگوهای ساختاری
· (Adapter) رابط یک کلاس را به رابط دیگری که مورد انتظار یک مشتری است تبدیل میکند. این الگو امکان همکاری بین اشیائی که قبلاً بخاطر داشتن رابطهای ناسازگار نمیتوانستند با هم کار کنند را فراهم میسازد.
· (Bridge) یک مفهوم مجرد را از پیاده سازی اش مجزا کرده تا هردو بتوانند بطور مستقل تغییر کنند.
· (Composite) اشیاء را بصورت ساختار درختی برای ایجاد ساختار سلسله مراتبی بفرم part-whole ترکیب مینماید. این الگو اجازه میدهد تا مشتریها اشیاء منفرد و مرکب را بصورت یکسانی پردازش کنند.
· (Decorator) در زمان اجرا وظایف جدیدی به یک شی ء اضافه میکند. این الگو بدیلی قابل انعطاف برای گسترش عملکرد یک کلاس بوسیله زیر کلاس ساختن از آن را فراهم میکند.
· (Facade) یک رابط منفرد برای مجموعهای از رابطها در یک زیر سیستم تدارک میبیند. در واقع یک facade رابط سطح بالاتری برای یک زیر سیستم تعریف کرده و باعث میشود تا زیر سیستم را بصورت ساده تری مورد استفاده قرار داد.
· (Flyweight) از اشتراک منابع برای فراهم نمودن تعداد زیادی از اشیاء سبک بصورت کارا استفاده میکند.
· (Proxy) یک جانشین یا جایگاه برای کنترل دسترسی به یک شیء ایجاد میکند.
3- الگوهای رفتاری
· (Chain of responsibility) با دادن شانس به بیش از یک شیء برای پاسخگویی به یک درخواست از در هم آمیختن فرستنده و دریافت کننده یک درخواست جلوگیری میکند. به این ترتیب که اشیاء دریافت کننده یک درخواست را بصورت زنجیرهای در نظر گرفته و درخواست را در طول این زنجیره عبور داده تا اینکه یکی از اشیاء آنرا پاسخ پوید.
· (Command) یک درخواست را بصورت یک شیء کپسول سازی میکند. بنابراین این امکان را فراهم میکند تا مشتریها را با درخواستهای متفاوت پارامتردهی کرده، درخواستها را صف بندی یا Log کرده و اعمال قابل برگشت فراهم کنید.
· (Interpreter) برای یک زبان، نمایشی از گرامرش به همراه مفسری که از آن نمایش برای تفسیر جملات مربوط به آن زبان استفاده میکند تعریف مینماید.
· (Iterator) روشی برای دسترسی ترتیبی به عناصر یک شیء مجتمع (مرکب) بدون افشاء کردن نمایش آن فراهم میکند.
· (Mediator) شیءی که نحوه تبادلات مجموعهای از اشیاء را کپسول سازی میکند را تعریف مینماید. این الگو با پرهیز از ارجاعات مستقیم بین مجموعهای از اشیاء، اتصال حداقلی بین آنها را ترغیب نموده و اجازه میدهد تا تبادلات را بصورت مستقل تغییر دهید.
· (Memento) بدون شکستن کپسول سازی، حالت درونی یک شیء را تسخیر و ذخیره کرده تا آن شیء بتواند بعداً به آن حالت برگشت یابد.
· (Observer) یک نوع وابستگی یک- به- چند بین اشیاء تعریف کرده بطوریکه وقتی یک شیء حالتش را تغییر داد تمام اشیاء وابسته به آن خبردار شده تا آنها خود را با آن تغییر هماهنگ کنند.
· (State) اجازه میدهد تا یک شیء هنگامیکه حالتش عوض شد رفتارش را تغییر دهد. اشیاء از این نوع رفتار کلاسی که در آن قرار دارند را تغییر میدهند.
· (Strategy) یک خانواده از الگوریتمها را تعریف؛ کپسول سازی و قابل جایگزین کردن میکند. استراتژی اجازه میدهد تا یک الگوریتم را بدون توجه به جائیکه مورد استفاده قرار میگیرد تغییر داد.
· (Template method) اسکلت یک الگوریتم را تعریف کرده و پیاده سازی بعضی قدمهای آنرا به زیر کلاسها محول میکند. این الگو امکان تغییر بعضی از قدمهای یک الگوریتم را بدون تغییر در ساختار کلی الگوریتم به زیر کلاسها میدهد.
· (Visitor) عملی که بایستی بر روی عناصر یک ساختار از اشیاء اعمال شود را نمایش میدهد. این الگو اجازه میدهد تا عمل جدیدی بدون نیاز به تغییر کلاسهای عناصری که بر روی آن عمل میکند را تعریف کنید.
·
منبع
وکی پدیا