שאלה עיצובית...

asp123

New member
שאלה עיצובית...

שלום, טוב, אז רציתי לשאול שאלה עיצובית לגבי אפליקצית ווב(בPHP, אין שום קשר לקוד). אני משתמש בMVC וAdapter בשביל ליצור את התוכן של דפי האתר(תוך כדי התאמה של מסד נתונים). רציתי לדעת, במחלקת הView, האם כדאי לי ליצור מחלקה לכל מקרה(היורשת ממחלקה גנרית), בשביל לטפל בכל דבר באתר(כלומר בפורומים, בהודעות הפרטיות, במשתמשים, בחדשות, וכו') ? או שכדאי לי פשוט לבנות פונק' לכל נושא במחלקת View הגנרית(פשוט לעשות מחלקה שתטפל בכל הנושאים). במחלקת המודל בניתי מודל לכל סוד של בסיס נתונים (ואת האדאפטר שעושה את ההתאמה כמובן) ובניתי פונק' שמטפלות בשאילתות ושולחות בקשה למחלקת הDataAccess(בהתאם לסוג המסד), בקצרה, לא פיצלתי את המודלים מכיוון ששם זה סיפור שלא נגמר. אז בחזרה לשאלה שלי, האם לבנות מחלקת View לכל שירות באתר(פורומים, הודעות, חדשות וכו') או לעשות פונק' לכל נושא (אני לא רואה המון הבדל, אוליי בביצועיים, למה מבחינתי, בשיטה האחת הקוד יהיה פחות שמיש וקל, ובשיטה השניה אני אצטרך ליצור יותר אובייקטים(אני משתמש בRefernces)). אשמח לדעתכם בנושא, תודה. מחלקת הView הגנרית...(Php זה לא הולך משו עם OOP בגלל הסינטקס וה$this, שמפנה למשתנים ופונק' שבתוך האובייקט וגם אין נק' אלא ->)
class View{ var $output; var $model; function View(& $model){ $this->model=& $model; } }​
ד"א יש לי עוד שאלה לגבי הState Pattern, אני רוצה לעשות לו אימפלמנטציה בשביל להמנע מSwitch(ים) רבים באפליקציה שלי.
 

עידו פ

New member
מבלי להתייחס ספציפית ל-PHP

לפי MVC ה-VIEW אמור להתאים למודל (להציג את המודל), אבל זה לא מחייב מן הסתם הגדרת מחלקת view לכל מחלקת מודל (לדוגמה, באתרים פשוטים, ה-view יכול להיות בסה"כ איזשהו אובייקט grid שמציג את המודל ונבנה באופן אוטומטי עפ"י השדות שמוגדרים במודל). מה שצריך זה לזהות את הדרישה הויזואלית והתפעולית שנוגעת למודל - האם יש הבדל בין תצוגה של סוג ישות אחד לסוג ישות אחר (ציינת את הדוגמה של פורום - אני מניח שתוכן הודעות בפורום מוצג באופן אחר מפרטים אישיים של משתמש, אבל אולי מוצג באופן דומה לתוכן הודעות של חדשות באתר חדשות). אני מציג שבהתאם למודל שלך, תבדוק אילו שיטות תצוגה אתה מעוניין לישם אצלך (grid, master/detail ...) ובהתאם תבדוק האם אתה יכול לבנות view גנרי לכל אחד משיטות תצוגה אלו. אם אתה רואה בהמשך שהמבנה הגנרי מכביר עליך בחלק מהישויות (נדרשות יותר מדי התאמות לישות ספציפית) אז תמיד אפשר לבצע refactoring ולפצל מחלקת view לשתי מחלקות.
 

arnonrgo

New member
Views

בגדול view = מסך או לפחות חלק משמעותי במסך (למשל portlet או webpart בפורטל) הרעיון הוא שרב הלוגיקה התצוגתית יהיה בcontroller כך ש ניתן יהיה לבדוק אותם טוב יותר (לכתוב unit tests) ניתן יהיה לטפל במופע של מודל על יותר מview אחד בצורה נוחה ארנון
 
"לוגיקה תצוגתית"

הסבר פרט ונמק
.
 

arnonrgo

New member
לוגיקה תצוגתית

הכוונה לקוד שנמתא בצד הלקוח ומטפל בכל האספקטים הקשורים לתצוגה שאינם רכיבי התצוגה פרופר למשל אם יש לך מסך שבו יש תצוגה של טבלה וגם תצוגה של עץ של ישות מסוימת כאשר הישות מתעדכנת אתה צריך לקלוט את המידע מהשרת/שרות להמיר אותו לישות בצד תצוגה (model בMVP) לדעת לעדכן את כל התצוגה ולדעת לעדכן את כל התצוגות הפתוחות של אותה ישות תצוגתית (טבלה ועץ בדוגמא)
 
למעלה