תבנית המתאם בג'אווה

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

במדריך מהיר זה, נסתכל על דפוס המתאם והטמעתו ב- Java.

2. תבנית מתאם

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

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

2.1. דוגמה לתבנית מתאם

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

כדי להתמודד עם בעיה זו, ניצור מתאם אשר ימיר את הערכים וייתן לנו את התוצאות הרצויות:

ראשית, ניצור את הממשק המקורי זָחִיחַ שאמור להחזיר את המהירות של כמה מכוניות יוקרה במיילים לשעה:

ממשק ציבורי מטלטל {// מחזיר מהירות ב- MPH כפול getSpeed ​​(); }

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

מחלקה ציבורית BugattiVeyron מיישמת מטלטלין {@Override כפול ציבורי getSpeed ​​() {חזרה 268; }}

כעת ניצור ממשק מתאם מתאם מטלטלין שיהיה מבוסס על אותו הדבר זָחִיחַ מעמד. זה עשוי להיות שונה מעט כדי להניב תוצאות שונות בתרחישים שונים:

ממשק ציבורי MovableAdapter {// מחזיר מהירות ב- KM / H כפול getSpeed ​​(); } 

היישום של ממשק זה יורכב משיטה פרטית convertMPHtoKMPH () שישמשו להמרה:

מחלקה ציבורית MovableAdapterImpl מיישם MovableAdapter {יוקרה ניידות מטלטלין פרטיות; // קונסטרוקטורים סטנדרטיים @Override ציבורי כפול getSpeed ​​() {להחזיר convertMPHtoKMPH (luxuryCars.getSpeed ​​()); } להמיר כפול פרטיMPHtoKMPH (כפול קמ"ש) {החזר קמ"ש * 1.60934; }}

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

@ מבחן ציבורי בטל כאשר ConvertingMPHToKMPH_then בהצלחה מומר () {Movable bugattiVeyron = BugattiVeyron חדש (); MovableAdapter bugattiVeyronAdapter = MovableAdapterImpl חדש (bugattiVeyron); assertEquals (bugattiVeyronAdapter.getSpeed ​​(), 431.30312, 0.00001); }

כפי שנוכל להבחין כאן, המתאם שלנו ממיר 268 קמ"ש ל 431 קמ"ש במקרה הספציפי הזה.

2.2. מתי להשתמש בתבנית מתאם

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

3. מסקנה

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

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


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