Design patterns הם פתרונות בהנדסת תוכנה לשימוש רב פעמי לבעיות נפוצות. זה לא תבניות קוד, אלא קווים מנחים של איך לפתור את הבעיה בדרך ברורה ו-scalable למערכות גדולות.
יש כמה design patterns קלאסיים.
Creational Design Patterns
Singleton Pattern – מבטיח של-class יש מופע אחד בלבד ומספק נקודת גישה גלובלית למופע הזה.
Factory Method Pattern – מגדיר ממשק ליצירת אובייקט, אבל מאפשר ל-subclasses לשנות את סוג האובייקטים שיווצרו.
Abstract Factory Pattern – מספק ממשק ליצירת משפחות של אובייקטים שקשורים או תלויים ביניהם מבלי לציין את המחלקות הקונקרטיות שלהם.
Builder Pattern – מאפשר בניית אובייקטים מורכבים צעד אחרי צעד. דפוס של בניית אובייקט.
Prototype Pattern – יצירת מופע מאותחל שאפשר לשכפל או להעתיק.
Structural Design Patterns
Adapter Pattern – מאפשר ל-interface של class קיים להיות בשימוש של interface אחר.
Bridge Pattern – מפריד בין ההגדרה המופשטת של אובייקט למימוש שלו, כך שאפשר לשנות את המימוש באופן בלתי תלוי.
Composite Pattern – מחבר אובייקטים למבנה של עץ לייצוג היררכיות.
Decorator Pattern – חיבור אחריות נוספת לאובייקט באופן דינמי.
Facade Pattern – מספק ממשק מאוחד לקבוצת ממשקים במערכת.
Flyweight Pattern – שימוש בשיתוף על מנת לתמוך ביעילות במספר גדול של אובייקטים מפורטים.
Proxy Pattern – משמש כממלא מקום לאובייקט אחר כדי לשלוט בגישה אליו.
Behavioral Design Patterns
Chain of Responsibility Pattern – מעביר בקשה לאורך שרשרת של handlers.כשמגיעה בקשה, כל handler מחליט האם לעבד את הבקשה או להעביר אותה ל-handler הבא בשרשרת.
Command Pattern – אוסף בקשה לאובייקט, ובכך מאפשר למשתמשים להגדיר פרמטרים ל-clients עם תורים, בקשות ואופרטורים.
Interpreter Pattern – מספק דרך לתרגום שפה, מקבל ביטוי ומחזיר ביטוי מפורש.
Iterator Pattern – מספק דרך לגשת לאלמנטים של אוסף בצורה סדרתית בלי צורך לדעת את הייצוג של האלמנטים.
Mediator Pattern – מגדיר אובייקט בעל אוסף חוקים לתקשורת בין אובייקטים שונים.
Memento Pattern – שומר ומייצא מצב של אובייקט על מנת שיהיה אפשר לשחזר אותו.
Observer Pattern – מגדיר תלות של יחיד לרבים בין אובייקטים. כאשר אובייקט מסויים משנה את המצב שלו, כל התלויים בו יתעדכנו באופן אוטומטי.
State Pattern – מאפשר לאובייקט לשנות התנהגות כאשר המצב שלו משתנה.
Strategy Pattern – מגדיר משפחה של אלגוריתמים, מאגד אותם וגורם להם להיות הפיכים. האלגוריתם ישתנה בהתאם למי שמשתמש בו.
Template Pattern – מגדיר שלד של class אבל נותן ל-subclasses לדרוס חלקים שונים בלי לשנות את המבנה.
Visitor Pattern – מייצג פעולה שצריך לבצע של מבנה אובייקט.
כל Design Pattern מציע פתרון לבעיות אמיתיות בעולם התוכנה. הם מאגדים ניסיון של פתרון בעיות ועוזרים להשתמש בקוד קיים.