6

Zastanawiam się, jakie są różnice między wzorzec obserwatora i MVC. Mam pewne doświadczenia w pisaniu programu MVC w Javie w szkole, ale nie ma doświadczenia z wzorcem obserwatora. (ktoś powiedział mi, że wzór obserwatora oznacza, że ​​użyłem klasy Observer w Javie ... Nie sądzę, że to dobra odpowiedź.)Wzorzec obserwatora vs MVC

Proszę, pomóżcie mi z następującymi pytaniami, dziękuję za dużo.

  1. Jaka jest różnica między nimi? Wzorzec obserwatora nie używa oddzielnej klasy dla kontrolerów?

  2. Jaki jest związek między wzorem obserwatora a MVC? Usłyszałem dwie różne wersje.

    • Pierwsza wersja jest taka, że ​​MVC jest architekturą, a wzorzec obserwatora jest wzorem projektowym. Wyglądają podobnie, ponieważ MVC używa wzorca obserwatora.
    • Druga wersja to to, że wzór obserwatora i MVC to dwa różne wzory.
  3. Czy można użyć tylko jednego z nich? Jeśli tak, to w jakich przypadkach używa się jednego nad drugim i dlaczego?

+0

MVC zawiera obserwatora – lichengwu

Odpowiedz

2

Istnieje wiele artykułów związanych z zadawanymi pytaniami. MVC jest dla mnie wzorem architektonicznym, w którym "zawiera" również wzór obserwatora. Sądzę, że jeśli ktoś naprawdę studiuje wzór MVC w różnych realistycznych realizacjach projektów, jest w nim więcej niż jeden wzorzec projektowy.

Jest to albo powiększanie, albo pomniejszanie.

13
  1. Masz rację, mówiąc, że MVC to bardziej styl architektury, a nie wzornictwo dobra dyskusja tutaj: Is MVC a Design Pattern or Architectural pattern

Mam nadzieję, że to odpowiada na dwa inne pytanie też.

Wzór wzoru obserwatora to wzór Behavirola, który jest używany, gdy chcemy powiadomić wszystkie osoby będące na utrzymaniu obiektu (np. X) w przypadku zmiany obiektu x. dobre Przeczytaj: http://www.dofactory.com/Patterns/PatternObserver.aspx

I obaj są ze sobą ściśle powiązane, jak MVC będzie widać z MVC schemacie - na przykład: zmiana w „Widok” musi być zgłoszone do „modelu” i „Kontroler” Jeden skuteczny sposobem na osiągnięcie takiej cechy jest wzór wzorcowy Obserwatora.

dobre Przeczytaj: http://en.wikipedia.org/wiki/Observer_pattern

In fact the observer pattern was first implemented in Smalltalk's MVC based user 
interface framework. 

Nadzieja to pomaga!

enter image description here

+0

widzę pętlę tutaj. Widok wysyła sygnał do kontrolera, który wysyła sygnał do modelu, który wysyła sygnał do wyświetlenia? – whomaniac

+0

Tak. Sygnał rozpoczyna się i zatrzymuje w widoku.Na przykład, jeśli klikniesz przycisk, aby pochylić tekst, widok powie kontrolerowi, który decyduje, co oznacza "kursywą" (logika, np. Jest tekstem zaznaczonym), a następnie aktualizuje model tekstowy (ustaw ten blok tekstu na "ITALIC" = TRUE "), który mówi widokowi, aby wyświetlić kursywną wersję czcionki. Generalnie nie chcesz jednak nieskończonej pętli. – stackexchanger

+0

Ale jeśli aktualizacja pochodzi z modelu, co robi strzałka "View Selection"? – binaryguy