תבנית הגשר בג'אווה

1. סקירה כללית

ההגדרה הרשמית לתבנית העיצוב של Bridge שהוצגה על ידי כנופיית ארבע (GoF) היא לנתק הפשטה מיישומה כדי שהשניים יוכלו להשתנות באופן עצמאי.

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

2. דוגמה לתבנית גשר

בתבנית הגשר נשקול שתי שכבות של הפשטה; האחת היא הצורה הגיאומטרית (כמו משולש וריבוע) שמלאה בצבעים שונים (שכבת ההפשטה השנייה שלנו):

ראשית נגדיר ממשק צבע:

ממשק ציבורי צבע {מילוי מחרוזת (); }

כעת ניצור מעמד קונקרטי לממשק זה:

מחלקה ציבורית מיישמת צבע כחול {@Override public מילוי מחרוזות () {return "צבע הוא כחול"; }}

בואו ניצור תקציר צוּרָה מחלקה המורכבת מהתייחסות (גשר) ל צֶבַע לְהִתְנַגֵד:

מעמד מופשט ציבורי צורה {מוגן צבע צבע; // בונים סטנדרטיים מופשטים צייר מחרוזת ציבורי (); }

כעת ניצור מעמד קונקרטי של צוּרָה ממשק אשר ישתמש בשיטה מ צֶבַע ממשק גם כן:

מעמד ציבורי כיכר מרחיבה צורה {כיכר ציבורית (צבע צבע) {סופר (צבע); } @ העבר לצייר מחרוזת ציבורית () {החזיר "ריבוע משורטט." + Color.fill (); }}

לגבי דפוס זה, הקביעה הבאה תהיה נכונה:

@Test הציבור בטל כאשרBridgePatternInvoked_thenConfigSuccess () {// ריבוע עם צבע אדום ריבוע צורה = ריבוע חדש (אדום אדום ()); assertEquals (ריבוע. ציור (), "ריבוע משורטט. צבע הוא אדום"); }

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

ריבוע משורטט. צבע: משולש אדום משורטט. צבע כחול

3. מסקנה

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

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

קוד המקור המלא לדוגמא זו זמין ב- GitHub.


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