Podejście MVC z C++
Uczyłem się PHP MVC pattern i jest całkiem fajny. prawie skończyłem aplikację i widzę, jak bałagan można zrobić kod bez dobrego projektu. Czy MCV może być stosowany w aplikacjach C++? Gdzie jest menedżer wtyczek / wtyczek, jeśli jest to w ogóle możliwe?Model czy kontroler? Dzięki!
EDIT:
Mam na myśli C++ z GUI toolkit jak QT/wxWidgets/GTK+ Również proszę o pomoc jak zaimplementować w C++. Nauczyłem się jak to zrobić w PHP ale jak wiadomo oba języki są jakoś inaczej!
EDIT2
6 answers
Jak właściwie zaimplementować to w C++
-
Spraw, by klasy odpowiedzialne za rendering nie wiedziały nic o szczegółach aplikacji. Nazwij je SomethingView classes to make this point clear
-
Spraw, aby obiekty domeny nie wiedziały nic o wizualizacji lub interakcji z użytkownikiem. Nie musisz nazywać ich modelką, ale możesz
Stwórz zestaw klas odpowiedzialnych za uruchamianie roli kontrolerów: przewodowe zależności do przeglądania i klasy modelu poprzez wtrysk zależności, jeśli to możliwe. przykład: CppInject. W każdym razie, klasy kontrolerów mogą wiedzieć zarówno o klasach modelu, jak i view, więc ważne jest to: wszystkie powiązania pomiędzy obiektami view I model są odizolowane od kontrolerów .
Oznacza to również, że całe programowanie w stylu imperatywnym powinno być ograniczone do klas kontrolera: view i model powinny być w stylu deklaratywnym. Oznacza to, że powinni zaoferować usługi związane z jego rolą, ale uniknąć bezpośredniej interakcji z innymi obiektami jako skutki uboczne
-
Nie jest prawdą, że należy zaimplementować komunikację pomiędzy sterownikami a innymi komponentami z systemem typu event, chociaż taki system jest zdecydowanie pomocny, ale na pewno nie jest wymagany
-
niespodzianka! powyższe odnosi się do każdego języka lub frameworka, z wyjątkiem oczywiście języków, które jakoś już zmuszają MVC do gardła od samego początku, tj.: ruby on rails
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-08-19 19:43:57
MVC jest wzorcem projektowym, a nie konstrukcją specyficzną dla języka, więc tak, można go zastosować również do aplikacji C++.
MVC może i powinien być stosowany w dowolnym języku, aby Twój interfejs użytkownika był luźno połączony z backendem i można go zmienić przy minimalnym wpływie na siebie.
Wzorzec MVC zapewnia czyste rozdzielenie obiektów na:
- modele {[9] } do przechowywania danych,
- widoki do wyświetlenia całości lub części danych oraz
- Kontrolery do obsługi zdarzeń wpływających na model lub widok (- y).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-30 22:23:07
Tak, MVC można zastosować w C++. Na przykład framework MFC wykorzystuje architekturę dokumentu/widoku, która jest zasadniczo MVC.
Wzorzec projektowy nie jest biblioteką ani klasą. To wzór. Więc nie masz generycznej biblioteki MVC dla C++.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-03 16:39:27
Użyj frameworka Tree Framework . TreeFrog Framework jest szybkim i pełnym stosem C++ framework do tworzenia aplikacji internetowych.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-27 19:00:44
MVC to architektoniczny wzorzec projektowy (tj. sposób oprogramowania budowlanego) powszechnie kojarzony z aplikacjami internetowymi, ale ma zastosowanie ogólnie do każdego projektu oprogramowania w dowolnym języku. Musisz zrobić trochę abstrakcji wysiłku na swój projekt, i określić, który kawałek oprogramowania należy do każdej części (tzn. GUI jest prawdopodobnie częścią widoku, itp.).
Zauważ, że ten Typ wzorca ma na celu głównie oddzielenie rozwinięcia , tak aby każda część projekt może być rozwijany niezależnie od innych. Może to być irytujące dla małej samodzielnej aplikacji, ale przydatne i satysfakcjonujące przy większych projektach.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-03 16:56:41
Osobiście używam maszyn boost state dla sygnałów logicznych i boost do łączenia rzeczy ze sobą.
Napisałem mały przykład, który możesz przeanalizować tutaj: https://github.com/edubois/mvp-player
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-24 02:39:21