ראשי > factory method pattern > חלק ראשון
The Factory Method

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

ידועה גם בתור:
Virtual Constructor

מוטיבציה:
Frameworks משתמשים ב abstract class ים על מנת להגדיר ולתחזק יחסים בין אובייקטים. לעתים קרובות ה framework אחראית גם ליצירת האובייקטים שלה.
חישבו על framework עבור אפליקציות שיכולות להציג מסמכים עבור המשתמש. שתי האבסטרקציות המרכזיות בה הן המחלקות Application ו Document. שתיהן מחלקות אבסטרקטיות וקליינט חייב לבצע להן subclassing על מנת להשתמש בהן עבור אפליקציה ספציפית. כדי ליצור אפליקציה לציור, למשל, נגדיר את המחלקות DrawingApplication ו DrawingDocument. המחלקה Application אחראית לטיפול במסמכים והיא תיצור אותם לפי הצורך - למשל כאשר המשתמש בוחר Open או New מהתפריט שלה.
המחלקה האבסטרקטית Application אינה יכולה לדעת מראש איזה subclass ספציפי של Document היא תצטרך ליצור - זה תלוי אפליקציה - היא יודעת רק מתי היא תצטרך ליצור אותו ולא מאיזה סוג הוא יהיה. אם כן, יש לנו כאן בעיה: ה framework חייבת לדעת ליצור class ים, אבל היא מכירה רק abstract classes שאותם כמובן לא ניתן ליצור. נראה כסתירה? בעזרת ה factory method המהוללת ניתן לפתור גם סתירות כאלה!!

למעלה
הפתרון:
ה factory method pattern מציעה דרך לפתרון. היא מרכזת (
encapsulate) את הידע של איזה subclass של Document יש ליצור ומעבירה את הידע הזה החוצה מה framework.

לחצו להגדלה
לחץ להגדלה - factory method exapmle

אם אינכם זוכרים כיצד לקרוא את הדיאגרמה זה הזמן להתרענן.
ה subclass ים של Application מגדירים מחדש את הפעולה האבסטרקטית CreateDocument() על מנת ליצור את סוג המסמך המתאים. כך Application יכולה, ברגע שנוצר subclass שלה, ליצור Documents שהם תלויי אפליקציה מבלי לדעת עליהם מראש. אנו קוראים ל CreateDocument() בשם factory method מכיוון שהיא אחראית ל"ייצור" של אובייקטים.

למעלה







 
מה בעמוד:
 
המטרה
המוטיבציה
הפתרון