ראשי > abstract factory pattern > חלק שני
The Abstract Factory

המבנה הכללי:
ולהלן המבנה הכללי של הabstract factory pattern . באופן מפתיע הוא די דומה לדוגמה שלנו מלמעלה. אם אינכם זוכרים את הסימונים אפשר
להתרענן .

לחצו להגדלה
לחץ להגדלה - abstract factory

למעלה
מיהם החברים בחגיגה?:
  • Abstract factory - מגדיר ממשק עבור פעולות שיוצרות אובייקטים אבסטרקטיים של products.
  • Concrete factory - מממשים את הפעולות של abstract factory כדי ליצור אובייקטים מוחשיים של products.
  • Abstract products - מגדירים ממשק לאובייקט מסוג מסויים של product.
  • Concrete Product - מגדירים אובייקט מוחשי של product שיווצר על ידי הconcrete factory המתאים. מממש את הממשק של abstract product.
  • Client - משתמש רק בממשק שהוגדר על ידי המחלקות abstract factory ו abstract product.
למעלה
מתי נשתמש בabstract factory pattern?:
  • כאשר מערכת צריכה להיות בלתי תלויה באיך חלקיה נוצרים, מורכבים ומיוצגים.
  • כאשר מערכת יכולה להיות מקונפגת עם אחת ממספר משפחות של אובייקטים.
  • כאשר רוצים לאכוף שימוש במשפחה שלמה של אובייקטים שיש ביניהם קשר וחייבים לתפקד ביחד.
  • כאשר יש ספריה של אובייקטים ורוצים לספק רק את הממשק שלהם ולא את המימוש.
למעלה
יחסי העבודה:
  • בדרך כלל נוצר מופע אחד של ConcreteFactory בזמן ריצה. הוא יוצר אובייקטים מסוג product בעלי מימוש מסוים. כדי ליצור products אחרים נצטרך ConcreteFactory אחר.
  • ה AbstractFactory דוחה את שלב יצירת האובייקטים ל concrete classes שיורשים ממנו.
למעלה
יתרונות וחסרונות:
  • יש הפרדה מהמימוש של ה concrete classes: ה pattern הזו עוזרת לשלוט בקבוצות של אובייקטים שהאפליקציה יוצרת. בגלל שה factory מרכז מרכז בתוכו את האחריות והמימוש ליצירת האובייקטים הוא משחרר את הקליינטים (האובייקטים המשתמשים ב products האלה) מהתלות בסוג האובייקטים. הקליינטים צריכים להכיר רק את הממשק של האובייקטים ולהשתמש בו כאשר המימוש אינו מעניינם.
  • החלפת משפחות שלמות של אובייקטים מתבצעת בקלות: האובייקט של ConcreteFactory מופיע רק פעם אחת באפליקציה - בזמן היצירה שלו. שימו לב שסוג המשפחה של האובייקטים שישתתפו תלוי אך ורק בו. לכן כדי להחליף משפחה שלמה של אובייקטים מספיק לשנות מקום אחד בקוד, כלומר ליצור ConcreteFactory אחר ולהיות רגועים בקשר לשאר, הוא כבר ידאג להכל: הוא ייצור את האובייקטים המתאימים, ואז נתקשר אתם דרך הממשק האבסטרקטי המשותף ובשאר התוכנית אפילו לא נצטרך לדעת מיהם (תודו שזה יפה..לא, תודו!...טוב, הבנתי..).
  • שמירה על עקביות בבחירת סוג האובייקטים: כאשר תוכנית מתוכננת לעבוד עם משפחה של אובייקטים שתוכננו כך שיעבדו ביחד, חשוב שהתוכנית לא תערבב בטעות אובייקטים ממשפחות אחרות. קל וכיף לבצע זאת בעזרת ה abstract factory pattern .
  • תמיכה בסוגים חדשים של products אינה הכי קלה: הממשקים האבסטרקטיים של הfactories מגדירים במדויק אילו מוצרים ניתן לייצר ולכן אם רוצים רוצים אפשרות לייצר סוגים אחרים של אובייקטים זה דורש הרחבה של ממשק הabstract factory , ובעקבותיו שינוי של כל תתי המחלקות שלו. לא הכי נחמד.
למעלה







 
מה בעמוד:
 
המבנה
המשתתפים
מתי נשתמש
יחסי העבודה
בעד ונגד