Категорично не съм съгласен с концепцията, че моделът не трябва да прилага INotifyPropertyChanged
. Този интерфейс не е специфичен за потребителския интерфейс! Той просто информира за промяна. Наистина, WPF силно използва това, за да идентифицира промените, но това не означава, че е UI интерфейс. Бих го сравнил със следния коментар: „Гумата е аксесоар за автомобил“. Разбира се, но велосипеди, автобуси и т.н. също го използват. В обобщение, не приемайте този интерфейс като UI нещо.
Като каза това, това не означава непременно, че вярвам, че моделът трябва да предоставя известия. Всъщност, като основно правило, моделът не трябва да прилага този интерфейс, освен ако не е необходимо. В повечето случаи, когато към клиентското приложение не се изпращат сървърни данни, моделът може да е остарял. Но ако слушам данни от финансовия пазар, тогава не виждам защо моделът не може да внедри интерфейса. Като пример, какво ще стане, ако имам логика, различна от потребителския интерфейс, като например услуга, която, когато получи цена Bid или Ask за дадена стойност, издава предупреждение (напр. чрез имейл) или прави поръчка? Това може да е възможно чисто решение.
Въпреки това има различни начини за постигане на нещата, но аз винаги бих твърдял в полза на простотата и избягването на излишъка.
Какво е по-добре? Дефиниране на събития в колекция или промени в свойствата на модела на изгледа и разпространението им в модела или изгледът да актуализира вътрешно модела (чрез модела на изглед)?
В крайна сметка, когато видите някой да твърди, че „не можете да направите това или онова“, това е знак, че той не знае какво говори.
Наистина зависи от вашия случай и всъщност MVVM е рамка с много проблеми и тепърва ще виждам обща реализация на MVVM навсякъде.
Иска ми се да имам повече време да обясня многото разновидности на MVVM и някои решения на често срещани проблеми - предимно предоставени от други разработчици, но предполагам, че ще трябва да го направя друг път.
person
Paulo Sousa
schedule
10.05.2010