איך ליישם תבניות עיצוב ב-JavaScript ?

Published on
Authors
  • avatar
    Name
    Yonatan Snir

אז מה הן תבניות עיצוב?

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

מתוך ויקיפדיה

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

דוגמה:

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

ישנן 3 סוגים של תבניות תכנון\עיצוב עיקריות:

  • דפוסי תכנון מבניים – Structural design patterns – כשמם, עוזרים לנו לתכנן ולנהל את המבנה והארכיטקטורה.
  • דפוסי תכנון התנהגותיים – Behavioral design patterns – כשמם, עוזרים לנו לנהל ולתכנן את התנהגות האפליקציה.
  • דפוסי תכנון יצירתיים\יוצרים – Creational design patterns – עוזרים לנו במקרה ויש לנו אפליקציה שמצריכה ליצור כמות גדולה של אובייקטים שונים.

ישנן עשרות רבות של תבניות עיצוב שניתן להחיל על מגוון רחב של בעיות. תבניות עיצוב אינן מוגבלות לשפת תכנות כזאת או אחרת, וניתן להחיל כמעט כל תבנית – בכל שפה! כמו שאתם אולי יודעים, השפות האהובות עליי הן JavaScript ו-Dart לכן בבלוג אני כותב בדר"כ בהן אבל אין שום מניעה לכתוב את את התבניות האלו בכל שפה. זה יכול להיות Java או C-sharp ואפילו Cpp. שוב, התבנית היא לא פתרון מידי, אלה סט של כללים שנותנים כיוון בדרך לפתרון הבעיה.

במאמרים הבאים אכתוב על תבניות עיצוב שונות, ויישומן בשפת JavaScript, Java או Dart.