תבנית עיצוב חזית בג'אווה

1. הקדמה

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

ראשית, ניתן סקירה כללית של התבנית, נפרט את יתרונותיה ונתאר אילו בעיות היא פותרת.

לאחר מכן, נשתמש בדפוס החזית על בעיה מעשית קיימת ב- Java.

2. מהי חזית?

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

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

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

בואו נראה את החזית בפעולה.

3. דוגמא

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

כפי שאתה יכול לראות, זה יכול להיות מורכב למדי ודורש קצת מאמץ כדי להניע את המנוע בצורה נכונה:

airFlowController.takeAir () fuelInjector.on () fuelInjector.inject () starter.start () coolingController.setTemperatureUpperLimit (DEFAULT_COOLING_TEMP) coolingController.run () catalyticConverter.on ()

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

fuelInjector.off () catalyticConverter.off () coolingController.cool (MAX_ALLOWED_TEMP) coolingController.stop () airFlowController.off ()

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

בואו נראה איך נוכל ליישם את זה:

מחלקה ציבורית CarEngineFacade {private static int DEFAULT_COOLING_TEMP = 90; פרטי סטטי פרטי MAX_ALLOWED_TEMP = 50; FuelInjector פרטי fuelInjector = FuelInjector חדש (); פרטי AirFlowController airFlowController = חדש AirFlowController (); Starter Starter פרטי = Starter חדש (); CoolingController פרטי CoolController = CoolingController חדש (); פרטי CatalyticConverter catalyticConverter = CatalyticConverter חדש (); בטל פומבי startEngine () {fuelInjector.on (); airFlowController.takeAir (); fuelInjector.on (); fuelInjector.inject (); starter.start (); coolingController.setTemperatureUpperLimit (DEFAULT_COOLING_TEMP); coolingController.run (); catalyticConverter.on (); } חלל ריק stopEngine () {fuelInjector.off (); catalyticConverter.off (); coolingController.cool (MAX_ALLOWED_TEMP); coolingController.stop (); airFlowController.off (); }

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

facade.startEngine (); // ... facade.stopEngine ();

4. חסרונות

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

לפעמים ניתן לעשות שימוש יתר בתבנית בתרחישים פשוטים, מה שיוביל ליישומים מיותרים.

5. מסקנה

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

ניתן למצוא את היישום של דוגמאות אלה ב- GitHub.


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