עבור לתוכן

תקשורת בין רכיבי תוכנה

Featured Replies

פורסם

שנה טובה,

אני מתכנת ב-C# מערכת שמכילה כמה רכיבים,

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

קיימת מחלקה ראשית שמכילה את כל הרכיבים.

איך בצורה אלגנטית לגרום להם לתקשר אחד עם השני? הוספה בקונסטרקטור, DELEGATE?

תודה

פורסם

באמצעות events, כמובן.

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

קצת קשה לומר בלי שתתן עוד מידע על הרכיבים.

פורסם
  • מחבר

פרטים נוספים:

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

אני רוצה ברגע שמגיע אובייקט לתור וה-Thread מתעורר, הוא יעבור עם האובייקט לרכיב אחר שיטפל באובייקט.

אני יכול לעשות מלא הצבעות של רכיבים אחד לשני אבל חשבתי שיש דרך יותר אלגנטית

פורסם

בבקשה:

http://en.wikipedia.org/wiki/Observer_pattern

האובייקט שמנהל את התור צריך להיות ה-Observable - הוא מאפשר לאובייקטים אחרים (שנקראים ה-Observers) להירשם אליו, וכל פעם שפעולה כלשהי שלו מבוצעת (כגון הוספת איבר לתור), הוא מרים event לרשימת ה-Observers שלו.

בדיוק שני אובייקטים צריכים להכיר את התור - האובייקט שמכניס איברים לתור והאובייקט שמוציא ממנו איברים.

פורסם
  • מחבר

תודה רבה,

שאלה נוספת בנוגע לזה,

אם למשל קופץ לי Event באובייקט א' של הגעת קובץ חדש לתיקייה,

ואני רוצה שרכיב ב' יטפל בקובץ, הדרך הסבירה לרשום את מתודה הטיפול של רכיב ב' היא דרך הקונסטרקטור של רכיב א', או דרך מתודה שמעבירה הצבעה לפונ'?

יש דרך אחרת יותר אלגנטית אולי?

הבנתי שלא כדאי שיהיו הצבעות בין אובייקטים שונים במערכת של כמה רכיבים...

תודה :hi:

פורסם

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

אני הייתי בוחר לשים את זה בפונקציה נפרדת.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים