מה זה Design Patterns

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 מציע פתרון לבעיות אמיתיות בעולם התוכנה. הם מאגדים ניסיון של פתרון בעיות ועוזרים להשתמש בקוד קיים.