Czy MVC nadaje się do pisania programów konsolowych? Chcę napisać Snake i szukam sposobu by rozdzielić domenę aplikacji od rysowania widoków.
Nadaje się.
W M powinieneś mieć
- planszę
- węża z polami na których obecnie się znajduje
- aktualny kierunek głowy
- mechanizm przesuwania węża o krok
- detekcję kolizji
- jabłka (i zgniłe jabłka redukujące długość, czy co tam jeszcze chcesz mieć)
- mechanizm zarządzania położeniem jabłek (i innych)
- detekcję wzrostu (czyli kolizji z jabłkiem)
W VC powinieneś mieć:
- rysowanie planszy
- odbieranie komend od użytkownika i przesyłanie do modelu nowego kierunku głowy (lub w którą stronę wykonujemy zwrot)
Coś musi jeszcze odpalać kolejne kroki węża co określony czas. Generalnie umieściłbym to w M.
W zasadzie czemu by nie? MVC w przypadku aplikacji internetowych bardzo łatwo rozróżnić, ale w Twoim każdy komponent miałby nieco inne składowe. Model zamiast interakcji z bazą będzie odpowiadał za główną logikę programu, widok za wyrzucanie informacji na konsolę, a kontroler za poprawne działanie pozostałych części.
Niezależnie od tego czy to będzie "prawdziwy" MVC na pewno nie ma sensu upychać wszystkiego w aplikacji do jednego pliku i jednej klasy.
Pipes napisał(a):
Model zamiast interakcji z bazą będzie odpowiadał za główną logikę programu
Dlaczego zamiast? Model zawsze odpowiada za "główną logikę". I nigdzie nie ma wymogu, żeby zajmował się interakcją z bazą.
kontroler za poprawne działanie pozostałych części.
Nie wydziwiaj, kontroler w MVC zawsze odpowiada za obsługę inputu użytkownika.