25-04-2009, 15:30
|
|
|
חבר מתאריך: 13.02.09
הודעות: 365
|
|
נתקלתי בבעייה כזו בעבר ופתרנו אותה ככה:
א. כל class מכיל פונקציה סטטית בשם New שמחזירה אובייקט חדש מהטיפוס של ה class.
ב. יש טבלה מרכזית שממפה את שם ה class (המחרוזות A, B, C וכו' בדוגמא לעיל) לפונקציית ה New שלו.
ג. בעת אתחול המערכת כל class מוסיף עצמו לטבלה המרכזית. יש כמה טריקים לעשות את זה בצורה נקייה.
ד. כשקוראים את הקלט ניגשים עם השם שהתקבל, למשל המחרוזת "A", לטבלה, ממנה מקבלים פוינטר לפונקציית ה New, מפעילים את הפונקציה ומקבלים אובייקט. זה יותר טוב מ if else או switch case ענק כי הקוד בגודל קבוע ואינו מתנפח כשנוספים אלף classes חדשים.
רק מה, כמו שנהוג לומר בסדרות יאפיז אמריקאיות: It's so damn 80s. למה להתחכם ב ++C כשהכל בא בקלות ב Java או Net. ?
|