2010-04-29 14 views
5

W klasycznym MVC model powiadamia widok o dokonanych na nim zmianach. W języku C# oznacza to, że muszę podklasować widok, który mnie interesuje, aw subklasie rejestru klasowego do zdarzenia modelu. Na przykład: , jeśli miałbym zaimplementować MVC przy użyciu C# i WinForm, musiałem podklasować klasę TextBox, a następnie zarejestrować wewnątrz konstruktora MyTextBox dla zdarzeń modelu. Mam rację? Jak to zostało wydane w Smalltalk? Czy trzeba także podklasować każdy widok, aby zarejestrować zdarzenia modelu, czy jest jakiś sposób dynamicznego dodawania zdarzeń do widoków w locie?Pytanie o klasyczne MVC

Dzięki

Odpowiedz

1

Aby rozwiązać ten sub-pytanie o tym, jak Smalltalk (z której MVC wywodzi) obsługuje to: początkowo (jest Smalltalk-80, gdzie Trygve Reenskaug realizowane MVC) to rzeczywiście konieczne do podklasy widoku superklas dla określonego widoku, aby zarejestrować go jako subskrybenta, aby zmienić zdarzenia z konkretnej podklasy modelu. Kontrolery w Smalltalk były tylko do delegowania lub wywoływania zdarzeń okna (szczególnie klawiatury i myszy) do modelu. Zasadniczo można powiedzieć, że obiekty modelu zmodyfikowanego zostały zmodyfikowane, a widok tylko je wyświetlał. Jednak koncepcja Dynamic Values ​​lub ValueModels, jak zostali nazwani, sprawiła, że ​​podejście to przestało być w VisualWorks Smalltalk przestarzałe. Teraz możesz stworzyć standardowe środowisko GUI, bez potrzeby tworzenia podklasy, a każdy widok będzie mógł zarejestrować się jako obserwator w abstrakcyjnej klasie modelu. Model dla widoku nie będzie już klasą modelu, ale modelem wartości ze standardowym interfejsem. Więcej na ten temat: http://st-www.cs.illinois.edu/users/brant/papers/ValueModel/ValueModels.htm

+0

Nice (+1) Powiedział, że jest powód, dla którego Adele nigdy nie napisał książki i tylko "Czarna sztuka programowania MVC" na "splain rzeczy .... Kontroler zawsze były zanieczyszczone widokiem i modelują konkretne informacje, co doprowadziło do zmiany wyglądu - także do innych nowszych wzorców, takich jak MVP (Model-View-Presenter) –