DCI-Data, Context and Interaction-następca MVC?

Jaki jest najlepszy opis Danych, kontekstu i interakcji (DCI), aby przekazać je organizacji?

Został stworzony przez Trygve Reenskaug , twórcę wzorca MVC .

Czy to naprawdę następca MVC czy tylko kolejny wzór? A jakie są jego plusy i minusy?

Author: Seb Nilsson, 2008-12-18

5 answers

Odniosłem wrażenie, że nie jest to następca MVC, a dopełniacz, na przykład rysunek 5 w artykuł artima o DCI ma oba. Myślę, że ma to pomóc uczynić rozróżnienie między modelem a kontrolerem bardziej rozsądnym, a może między inną częścią kontrolera lub różnymi częściami modelu.

Podstawową ideą wydaje się być podzielenie logiki dla poszczególnych działań naszych klas danych i przeniesienie jej do cech/mixins / whatever, one na akcję (użytkownika). Będziesz miał wiele małych kawałków kodu, zamiast kilku dużych kawałków. Wygląda na to, że dodawanie nowych mixinów powinno być "lepsze" niż dodawanie funkcjonalności do klas podstawowych. Kod do poszczególnych działań będzie prawdopodobnie (myślę?) być bardziej rozłożone, ale kod dla różnych działań powinien być wyraźniej i wyraźnie oddzielony.

 17
Author: Tim,
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
2009-03-21 17:01:58

Trygve robi prezentację DCI w https://vimeo.com/8235394

DCI został stworzony, aby rozwiązać problem w orientacji obiektu: zbyt trudno jest przejrzeć kod OO.

Kod dla jednego przypadku użycia w OO jest typowo rozłożony pomiędzy wiele klas. Aby zrozumieć, jak działa kod, musisz również znać relacje między obiektami w trybie runtime. Te relacje nie są zakodowane, zależą od sytuacji.

Nadkomisarz proponuje kod dla dany przypadek użycia jest oddzielany od klas i umieszczany w innym artefakcie zwanym kontekstem. Obiekty różnych klas mogą wchodzić w relacje w tym kontekście i brać udział w interakcjach, w których mają różne role.

Celem DCI jest uczynienie kodu OO bardziej czytelnym!

Tak bym to ujął.

 47
Author: Guge,
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
2018-05-27 10:50:13

Dobre pytanie i często występujące pytanie. Krótka odpowiedź jest taka, że jest to paradygmat oparty na ideach założycielskich OO autorstwa Kay, Dahl i innych. Został stworzony przez Trygve Reenskaug, jak zauważysz, z myślą o kilku celach. Jednym z nich jest dążenie do tego, aby operacje IO były pierwszorzędnymi obywatelami programu. (nie IO jak w operacjach dyskowych, ale cała komunikacja pomiędzy dwoma różnymi obiektami). Innym ważnym celem DCI jest podział tego, co robi system (funkcjonalność/zachowanie) from what the system is (data)

 5
Author: Rune FS,
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-03-14 12:23:59

Myślę, że lepsze zrozumienie systemu to ogromna wygrana dla każdej organizacji, ale można również powiedzieć, że DCI jest poprawą na MVC ze względu na następujące dodatkowe czynniki:

  1. czyste oddzielenie zachowania systemu i danych zapewnia liczne korzyści dla działań agregacji danych, w tym bardziej wydajne analizy w czasie rzeczywistym ze względu na mniejszy rozmiar obiektów domeny.
  2. Data object i behavior object ponowne użycie jest znacznie łatwiejsze w obrębie podziałów funkcjonalnych, gdy mają swoje własne miejsce do życia, a nie są cząstkami, jakby losowo umieszczonymi w podzbiorze mieszanych obiektów danych / zachowania w systemie.
  3. ponieważ BDD staje się metodologią DeFacto agile, organizacja będzie o lata przestępne wyprzedzać resztę branży w tej praktyce i być może będzie wzorem do naśladowania dla innych podobnie myślących organizacji.
 1
Author: Eric Steen,
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-05-21 00:39:24

To wygląda zupełnie jak Policy based design Andrei Alexandrescu w nowoczesnym c++ design, jednak praca jest bardziej niskopoziomowa, DCI wygląda jak architektura z częściami metodologii(przypadki użycia napędzają projekt).

 0
Author: Gabriel Ščerbák,
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
2010-04-05 13:21:45