state machine

state machine

בדוגמאות שונות של מימוש של state machine ראיתי שיש שימוש בסינגלטון כדי לקבל את ה state הבא. האם זה כדי שאם יש מידע מסוים ששייך ל state יהיה shared בין קריאה לקריאה? בין משתתפים אחרים? פספסתי משהו?
 

עידו פ

New member
->

יכול להיות שהסינגלטון המדובר הוא מחלקה נפרדת ממחלקת ה-state ? אם נסתכל על תרשים של אוטומט (מכונת מצבים) ונדמיין שמחלקת ה-state היא עיגול כלשהו בתרשים, אז הסינגלטון הוא למעשה כל התרשים (או ליתר דיוק - טבלת המצבים שנוצרת ממכונת המצבים). בתכנון מחלקות, כאשר מגדירים מתודה במחלקה אשר אינה ניגשת למאפיינים של ה-Instance של המחלקה (או שניגשת למאפיינים של ה-instance שהם בוודאות זהים לכל ה-Intance-ים של המחלקה), לפעמים מגיעים למסקנה שאין סיבה מיוחדת להגדרת המתודה כמתודה של instance אלא ניתן להגדיר את המתודה כסטטית - וזה מה שקורה כנראה במקרה של טבלת המצבים (כי לטבלה עצמה אין מאפיינים משמעותיים ולוגיקת המתודה נובעת אך ורק מהפרמטרים הנכנסים שהם המצב הנוכחי והפעולה). ממתודה סטטית במחלקה שאין משמעות ליצירת Instance-ים מרובים שלה, המרחק ליישום המחלקה כסינגלטון הוא המרחק של הצמדת שם ה-DP בהערה למחלקה.
 
למעלה