בית פורומים למתכנתים שבינינו

wpf בתבנית עיצוב mvvm

שלום אורח. באפשרותך להתחבר או להירשם
הצג 15 הודעות בעמוד הוסף לדף האישי  דווח למנהל שלח לחבר
נשלח ב-24/4/2014 23:56 לינק ישיר 
wpf בתבנית עיצוב mvvm

לפני שנה, התחלתי להתקשקש כאן על הקמת אתר וMVC...

בינתיים, התמקצעתי דווקא בתחום אחר: WPF.

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


תוקן על ידי אור_היום ב- 24/04/2014 23:56:52




דווח על תוכן פוגעני

מחובר
נשלח ב-25/4/2014 00:27 לינק ישיר 

MVVM, היא תבנית עיצוב שממבט ראשון, מסבכת מאד את הפיתוח.
אבל ממבט שני, אין כמוה...

בתכנות המסורתי, למשל WinForms, מעצבים את הטפסים, הלחצנים, תיבות הטקסט וכו', ומצמידים לכל פקד אירועים: לחיצה על buttone1, מגדירה textBox1.Value = "hello world.

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

זה באה לפתור תבנית MVVM. אין יותר כזה דבר לערבב קוד עם UI!
הקוד מופרד לגמרי מהתצוגה, ולא מכיר אותה בכלל!


הנה דוגמא פשוטה:
אני רוצה לפתח אפליקציה, שהמשתמש מזין שם משתמש וסיסמא, האפליקציה מתחברת לdataBase של בנק הפועלים, ומציגה את התנועות האחרונות בחשבון הבנק.
בWinForms, את כל הלוגיקה כותבים בתוך הטופס, שנקרא לו BankForm. בטופס יש תיבת טקסט UserName, תיבת טקסט Password, ולחצן login.
לחיצה על הלחצן, שולחת אל הבנק את ערך תיבות הטקסט, ואז הבנק מחזיר את הנתונים, או מספר שגיאה.

בMVVM, כל הלוגיקה כתובה בתוך מחלקה שנקרא לו BankViewModel. למחלקה, יש פרופרטי UserName ופרופרטי Password ומתודה בשם Login.
את כל המידע שהבנק מחזיר, המחלקה חושפת כפרופרטיז.
המחלקה הזו, יש בה רק קוד, בלי שום UI. אני יכול לעשות לה טסטים באמצעות UnitText, ולדבג אותה כרצוני.

בנפרד מהמחלקה הזו, יש טופס שנקרא BandView, שמלבישים אותו על המחלקה BankViewModel. תיבות הטקסט של הטופס, מולבשות על הפרופרטיז, והלחצנים מולבשים על המתודות של המחלקה.

פשוט ומבריק!
אם אני רוצה להוסיף גם אפשרות להתקשר לבנק בטלפון, להקיש את הסיסמא ולקבל נתונים על חשבון הבנק [כפי שכולנו עושים מפעם לפעם], אני פשוט צריך לכתוב מחלקה BankPhone, שגם היא תתלבש על המחלקה BankViewModel.

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

איך מיישמים זאת בפועל?
בהמשך.



דדווח על תוכן פוגעני

מחובר
נשלח ב-29/4/2014 09:54 לינק ישיר 

אתה לץ או משהו?
חשבתי שזו התפקיד שלי



דדווח על תוכן פוגעני

מחובר
נשלח ב-1/5/2014 23:39 לינק ישיר 




דדווח על תוכן פוגעני

מחובר
   
בית > פורומים > אינטרנט ומחשבים > למתכנתים שבינינו > wpf בתבנית עיצוב mvvm
מנהל לחץ כאן לנעילת האשכול
הוסף לעמוד האישי  דווח למנהל שלח לחבר

bholext