דפוסי פרוקסי, מעצב, מתאם וגשר

1. הקדמה

במאמר זה אנו נתמקד בתבניות עיצוב מבניות בג'אווה - ונדון במה מדובר וכמה הבדלים מהותיים בין חלקן.

2. דפוסי עיצוב מבניים

על פי Gang of Four (GoF), ניתן לסווג דפוסי עיצוב לשלושה סוגים:

  1. יְצִירִי
  2. מִבנִי
  3. התנהגותי

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

3. תבנית פרוקסי

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

לקבלת דוגמה מפורטת לתבנית, עיין בפוסט הייעודי: The Proxy Pattern ב- Java.

נקודות עיקריות של בידול:

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

4. תבנית קישוטים

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

נקודות בידול עיקריות:

  • למרות שלדפוסי ה- Proxy וה- Decorator יש מבנים דומים, הם נבדלים בכוונה; בעוד שמטרתו העיקרית של פרוקסי היא להקל על קלות שימוש או גישה מבוקרת, מעצב מצרף אחריות נוספת
  • דפוסי ה- Proxy והמתאם מחזיקים התייחסות לאובייקט המקורי
  • ניתן להשתמש בכל הקישוטים מדגם זה באופן רקורסיבי, אינסוף פעמים, דבר שאינו אפשרי בדגמים אחרים

5. דפוס מתאם

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

לתיאור ויישום מפורט, עיין בפוסט הייעודי: תבנית מתאם בג'אווה

ההבדלים העיקריים בין דפוסי מתאם ו- Proxy הם:

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

6. תבנית גשר

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

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

לתיאור ויישום מפורט, עיין בפוסט הייעודי: Bridge Pattern ב- Java

נקודות מפתח של בידול:

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

7. מסקנה

במאמר זה התמקדנו בתבנית העיצוב המבני ובהבדלים בין חלק מסוגיו.

כמו תמיד, ניתן למצוא את היישום המלא של מדריך זה ב- Github.


$config[zx-auto] not found$config[zx-overlay] not found