תבניות עיצוב – הקדמה

תבניות עיצוב – הקדמה

אנחנו משקיעים המון זמן בכתיבת קוד לתוכנית או רעיון שיש לנו אבל לפעמים נכון יותר לעצור לזמן קצר להבין איך הדברים עובדים וכך לכתוב בצורה חכמה יותר, כך הקוד שאנו כותבים יהיה נוח לתחזוקה ועונה על הצורך שלשמו הוא נכתב בצורה הטובה ביותר.
לצורך זה התפתחו עם השנים לא מעט תבניות עיצוב (design patterns) שנותנות פיתרון לבעיות נופצות.

תבניות עיצוב מאפשרות לנו בצורה נוחה וקלה יחסית למדל פיתרון לבעיות שאנו נתקלים בהם בתוך תבניות קיימות. כלומר ע”י שימוש נכון בתבניות עיצוב ניתנת לנו האפשרות להשתמש בתבנית קיימת וטובה ולנו נשאר רק להכניס את הקוד הנכון והרלוונטי לתוכה.

הקלות ליישום של תבניות עיצוב מגיעה בדרך כלל עם הנסיון, ככל שנכיר יותר טוב את התבניות השונות על יתרונותיהם וחסרונותיהם נוכל לבחור בתבנית המתאימה לנו ביותר, וכן ככל שנשתמש בתבנית מסויימת יותר פעמים נוכל לדעת כיצד לממש אותה בצורה נכונה ומהירה.

אז רגע לפני שנצלול לעומק עם התבנית הראשונה, קצת הקדמה על תבניות עיצוב ועל מבנה הפוסטים הבאים.

אז בתאכל’ס, מה זה תבניות עיצוב?

תבניות עיצוב בתכנות הוא מונח המתאר דרך נכונה לפתרון בעיות נפוצות. ניתן להסתכל על תבניות עיצוב כמו על מתכון להכנת עוגה, המתכון עצמו לא מספק לנו עוגה טובה ליד הקפה, אבל הוא כן מספק לנו הוראות הכנה, כיצד ניתן לקחת את שלל המרכיבים הנצרכים, לבצע עליהם את הפעולות הנכונות ובכך לקבל את העוגה הנכספת (או סתם איזה עוגת שמרים).

עקרונות מבנה וקצת היסטוריה

על פי רוב תבניות עיצוב יעשו שימוש במספר עקרונות בסיסיים מ- SOLID principles (ראו ערך זה בוויקפדיה), בדרך כלל נוכל לראות שימוש בעקרונות  OCP – Open Closed Principle (עיקרון הפתיחות להרחבה והסגירות לשינויים), ו-ISP – Interface Segregation Principle (עיקרון הפרדת הממשקים).
אך לא רק, כמובן שלכל תבנית עיצוב האופי שלה ויהיו כאלו שיעשו שימוש במספר רב יותר של עקרונות SOLID.

ניתן לחלק את תבניות העיצוב לשלושה תחומים עיקריים:

  1. יצרני (Creational) – תבניות אלו מספקות לנו דרכים גמישות ונוחות ליצירת אובייקטים.
  2. התנהגותי (Behavioral) – תבניות אלו מאפשרות לנו להטמיע התנהגויות בצורה נוחה ונכונה בין אובקייטים בתוכנית שלנו
  3. מבני (Structural) – תבניות אלו מסייעת לנו בבניה יעילה של המחלקות בפרוייקט והגדרת הקשרים בינהם בצורה נכונה.

ניתן לומר שמקורם של תבניות העיצוב הוא בספר שכתב הארכיטקט אלכסנדר כריסטופר בשם ” A Pattern Language: Towns, Buildings, Construction” שיצא לאור בשנת 1977, ספר זה מגדיר באופן פורמלי בעיות מוכרות מעולם הארכיטקטורה ולהן מובאים גם פתרונות מופשטים, לאחר מכן בשנת 1994 נכתב הספר הראשון שתיעד ואסף בצורה מעמיקה תבניות עיצוב מעולם מדעי המחשב ושמו ”  Design Patterns – Elements of Reusable Object-Oriented Software” בספר זה הובאו 22 תבניות עיצוב שהפכו עם הזמן למוכרות ולשימושיות ביותר.

כיצד הפוסטים על תבניות עיצוב יהיו בנויים ?

הפוסטים יכילו את הנושאים הבאים :

  • הסבר כללי על התבנית.
  • הסבר מה הבעיה שהתבנית באה לפתור.
  • מדוע נכון להשתמש בתבנית ספציפית לפתרון בעיה מסויימת, או במילים אחרות, מה המוטיבציה לפתור בעיה מסויימת בעזרת התבנית.
  • כיצד התבנית עובדת – מבנה המחלקות בתבנית (דיאגרמה בדרך כלל).
  • דוגמה כללית לשימוש בתבנית.
  • דוגמה פרקטית לשימוש בתבנית (בד”כ בשפת #C, אבל כמובן שניתן לממש כל תבנית בכל שפת תכנות מונחת עצמים, OOP).
  • סדר פעולות נכון למימוש התבנית בהתאם לצורך הקיים.

אין לי ספק שתחום זה יכול לקדם כל מתכנת כמה צעדים קדימה ביכולות ובידע התכנותי שלו, והכי חשוב בעניי, תחום זה יקנה לך הרגלי תכנות נכונים וטובים. 

עד כאן להיום, בפוסט הבא נתחיל לצלול לעומק של עולם תבניות העיצוב.

ניפגש.

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *