Facade

guznik

New member
Facade

היי לכולם. תהיה עלתה במוחי אחרי שלמדתי על Facade: אם יש לנו מערכת Enterprise ממש גדולה, האם זה נכון להשתמש ב-Facade אחד גדול שיעטוף את כל הקריאות ל-BL או שיש איזה גבול שמעבר לו עדיף לחלק לכמה Facadים? אם יש כזה גבול, על מה הוא מבוסס ואיך החלוקה צריכה להתבצע? תודה.
 

עידו פ

New member
לא כל כך מובן

אם תעשה facade אחד גדול, הוא עדין יהיה מחולק להרבה מתודות שבסופו של דבר עוטפות את ה-BL. אם תעשה הרבה facade-ים, אז בסופו של דבר סך כל ה-facade-ים יהיה זהה לאחד הגדול. אז השאלות שצריכות להשאל הן: 1. האם מבחינת ארכיט' יש מקום לחלוקה לכמה facade-ים 2. האם מבחינה יישומית יש יתרונות/חסרונות לחלוקה לכמה facade-ים (שזה כבר תלוי באיזה סביבת פיתוח אתה עובד). לשאלה הראשונה - לרוב נוטים למדל את ה-facade לפי השירותים שהמערכת מציעה החוצה, כאשר לרוב השירותים מחולקים לפי נושאי עבודה ו/או ישויות מידע. לדוגמה - ייתכן שתרצה לחלק את השירותים לפי המחלקות השונות בארגון כשכל מחלקה מקבלת את ה-facade שלה עם הפעולות שרלוונטיות לעבודתה (וזאת בהנחה ואין הרבה מן המשותף למחלקות השונות) או לחילופין, ייתכן שהאוריינטציה של השירותים הינה לפי ישויות המידע, כך שכל מחלקה עובדת מול מספר facade-ים המטפלים בישויות המידע שאותה מחלקה אחראית עליהם. אני אישית לא מכיר כלל אצבע האוסר על חלוקה של יותר ממספר facade-ים מסוים, אם כי לפעמים יש מגבלה הנובעת מסביבת הפיתוח ומסביבת הריצה.
 

ייוניי

New member
-->

בוא נתחיל מזה שעל פי ההגדרה facade בא לפשט תהליכים מורכבים שדורשים שילוב של מספר אובייקטים על ידי חשיפה של ממשק פשוט יותר שמסתיר את המורכבות של תת-המערכת (ומן הסתם גם מאפשר קצת פחות גמישות בהשוואה לעבודה ישירה מול האובייקטים עצמם). ולעניינך, כמו כל מחלקה על פי מתודולוגיית OOP גם ה facade צריך להיות מחלקה קטנה שעוסקת בדבר אחד בלבד. כל מחלקה שעוברת כמות מסויימת של שורות קוד היא נטל תחזוקתי (אני שם לעצמי את השורה ה 300 כנורת אזהרה). החלוקה מתבצעת על ידי המצב (state) שכל מחלקת facade זקוקה לו בשביל לעבוד (כמו כל חלוקה בין מחלקות). אם אתה שם לב למצב שבו בתוך facade מסויים יש מספר גדול של collaborators (אובייקטים שהוא נעזר בהם) אולי יש מקום לחלק אותו למספר facade-ים שכל אחד מהם רואה סט אחר של אובייקטים ולא את כל השאר. ככה אתה מרוויח רמה נוספת של הורדת צמידות בין גורמים במערכת ויהיה יותר קל לתחזק אותה.
 
למעלה