Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ Pro _ Wzorce architektoniczne

Napisany przez: Spawnm 11.10.2010, 17:06:49

Witam,
jako że nie od dziś można zaobserwować rozsiane po blogach i forum (forach?) posty dotyczące MVC czy MVP
proponuję rozmowę na temat wzorców architektonicznych w php.



Napisany przez: destroyerr 11.10.2010, 17:23:58

Wszystkie wzorce mają być w jednym temacie? Jeśli chcesz tylko porównywać MVP i MVC to zaznacz to w temacie.

Napisany przez: Spawnm 11.10.2010, 17:29:07

Temat jest poświęcony wszystkim wzorcom architektonicznym w php.
W tym MVC, MVP, HMVC.

Napisany przez: Crozin 12.10.2010, 12:52:35

Może i lekko flameogennie, ale...

Żadnego z wymienionych nie da się w sumie zrealizować w PHP. Lekko "ułomne" implementacje (pozbawione części założeń) są możliwe, ale wtedy już o MVC, MVP, MVA, PAC czy "jakie mi się tam inne 3-4 literki na myśl nasuną" nie można mówić (a przynajmniej nie powinno się).
Żaden z tych wzorców nie został stworzony z myślą o środowisku HTTP (a to w nim przecież pracujemy), ani tym bardziej do rozwiązywaniu problemów w nim panujących.

Swoją drogą chętnie zobaczyłbym jakąś sensowną implementację któregokolwiek z nich (a raczej tego "czegoś" co ma się z nich wywodzić) w dowolnym języku "webowym", w jakiejś większej aplikacji.

Napisany przez: marcio 12.10.2010, 12:59:14

Podobnie nowszy asp.net nazywa sie jakos asp mvc czy on implementuje "prawdziwy" mvc?

Napisany przez: Theqos 12.10.2010, 13:45:13

Najlepszym wzorcem jest nieużywanie wzorców dla samego używania. Można nawet powiedzieć, że wzorce to zło. Warto je poznać w celach komunikacyjnych i dla jakiegoś tam poszerzenia horyzontów, ale nic nie zastąpi myślenia. Potem widać takich "ekspertów" z biegunką wzorcową wpychających je wszędzie na siłe i wyzywających ludzi od debili "bo to nie jest prawdziwe MVC".

Napisany przez: Spawnm 12.10.2010, 19:35:08

@Crozin - skoro w php nie da się zaimplementować mvc czy mvp to powiedz mi co implementują obecne fw? Wydawało mi się że wzorzec mvc , potem ktoś mi próbował udowodnić że mvp a teraz ?

+ z jakiego wzorca ty korzystasz ?

Napisany przez: sniver 12.10.2010, 20:13:28

a co to jest?
Kontroler steruje aplikacją i wywołuje moduł i dalszą kontrolę przejmuje "subkontroler" (nie wiem jak to nazwać). Subkontroler składa z klocków aplikacje.

Te klocki wyglądają tak:
widok - moduł (który wylicza) i warstwa danych (w zależności z czego ma brać dane: plik, baza, czy co innego).

widok jest wysyłany do składaka (nazwałem to tak bo składa do kupy warstwe wyglądu) i wyświetla całość na ekranie...

jak to nazwać? takie misz-masz?

efekt działania jest normalny - jak w przypadku waszych magicznych cudów niewidów...

Napisany przez: marcio 12.10.2010, 22:04:50

@sniver to o czym mowisz to "hmvp/hmvc" dalem w cudzyslowia zeby nie bylo, ale ich idea opiera sie wlasnie na modularnosci.
Kazdy modul ma swoj/e widoki i modele i kontroler.

Cytat
Kontroler steruje aplikacją i wywołuje moduł i dalszą kontrolę przejmuje "subkontroler" (nie wiem jak to nazwać). Subkontroler składa z klocków aplikacje.

Przewaznie mowi sie na to frontctrl i blockctrl smile.gif

Napisany przez: Crozin 13.10.2010, 08:42:33

Cytat
Podobnie nowszy asp.net nazywa sie jakos asp mvc czy on implementuje "prawdziwy" mvc?
Szczerze powiedziawszy nie wiem. Podobnie jak nie wiem jak się ma sprawa ze Spring-iem MVC i innymi narzędziami z bardziej "dojrzałych" platform.

@Theqos: w pewnym sensie zgadzam się z Tobą, ale lekko irytujące jest jak ktoś nazywa przykładowo AJAXa językiem lub "coś kompletne nie związanego z MVC" MVC. Tak mi się skojarzyło:


Cytat
to powiedz mi co implementują obecne fw?
Ciężko powiedzieć. Coś co nazwałbym Akcją-ŹródłemDanych-Szablonem. W przypadku niektórych FW (np. Kohana) część z tych warstw nachodzi na siebie.

Napisany przez: FanFataL 13.10.2010, 09:50:04

@Crozin nie bardzo się mogę z Tobą zgodzić.

Również mnie irytuje fakt gdy np. ajaxa nazywa się językiem programowania etc, ale mówienie o tym że MVC/MVP nie zostały stworzone z myślą o HTTP i dlatego żaden język webowy nie może implementować MVC/MVP wprost jest bzdurą.

Jak doskonale wiesz wzorce projektowe są uniwersalnymi rozwiązaniami pojawiających się problemów. Wzorce projektowe są tylko wytycznymi jak coś robić żeby było dobrze i spójnie - jeżeli zrobisz inaczej wiadomo że mijasz się z definicją danego wzorca (modyfikujesz go). Ale jeżeli postępujesz (kodujesz) zgodnie z założeniami danego wzorca to nada go używasz - nie ważne czy używasz php, jsp czy innego języka webowego. To tak jakbyś powiedział że nie można implementować Singletona do php bo mamy klonowanie.

Z praktycznego punktu widzenia programowania webowego i używania fw który opiera się na architekturze MVC - programujemy używając wzorca MVC!
Natomiast z punktu widzenia odbiorcy/usera masz rację że w grę wchodzi protokół HTTP i dochodzi kolejna warstwa jaką jest browser:


Na koniec powiem, że jeżeli udało się zaimplementować wzorce projektowe z architektury do informatyki, to dlaczego niby miałoby się nie dać zaimplementować MVC do języków webowych?

Przypominasz zatwardziałego JAVA'owca który krzyczy "OMG, OMG on pisze w językach skryptowych - on nie jest programistą bo nie kompiluje" ...

Pozdrawiam winksmiley.jpg
...

Napisany przez: Crozin 13.10.2010, 13:19:40

@FanFataL: Łady rysunek, ale brakuje mi w nim jednego - gdzie są strzałeczki pomiędzy Widokiem, a Modelem? - bo to one są w sumie najważniejsze. I dlaczego dane płyną przez kontroler, skoro Widok powinien sam odpytać Model, odpowiednio go do tego przygotowując wcześniej?

O ile jeszcze mogę zrozumieć brak strzałeczki z Modelu do Widoku (bo środowisko webowe uniemożliwia istnienie takiej), o tyle brak strzałeczki z Widoku do Modelu i podpis "Resulting Data Arrays" z Modelu do Kontrolera (gwoli ścisłości: Model może zwracać do Kontrolera jakieś dane, ale nie w celu przekazania ich przez ostatniego do Widoku) to zaprzeczenie idei tego wzorca.

Schemat, który pokazałeś to model wykorzystywany w większości FW. I dobrze! On jest całkiem dobry, sam pracując w PHP z reguły z czegoś takiego korzystam. Ma nawet swoje zalety względem MVC. Ale... on nie ma wiele wspólnego z MVC samym w sobie. Istnieje trójpodział aplikacji, ale działa on inaczej niż w przypadku tego cholernego MVC. Co więcej taki schemat z reguły oznacza, że Kontroler wykonuje większość logiki, która powinna spocząć na Widoku, a ten ostatni jest ograniczany do szablonów HTML/PDF/innych.

Cytat
Ale jeżeli postępujesz (kodujesz) zgodnie z założeniami danego wzorca to nada go używasz - nie ważne czy używasz php, jsp czy innego języka webowego.
I o to rozchodzi się cały problem. Kod, który od początku nie jest pisany z założeniami MVC, jest nazywany kodem MVC. Nie byłoby problemu, gdyby nazywano go kodem XYZ, który wywodzi się z MVC, ale nazywanie czegoś diametralnie innego (bo to już nie jest modyfikacja, to jest kompletnie inna architektura) czymś czym nie jest?
Ot weźmy takiego MVP. "Twórcy" wzięli MVC, przerobili go i trzeźwo myśląc uznali, że modyfikacje są na tyle duże, że to już nie jest MVC - więc nazwali to sobie MVP. O ile się nie mylę w przypadku takiego MVVM było podobnie. MVA - też podobnie.

Cytat
Przypominasz zatwardziałego JAVA'owca który krzyczy "OMG, OMG on pisze w językach skryptowych - on nie jest programistą bo nie kompiluje" ...
Nie, ponieważ nie uważam, by model używany w FW był zły. On nie jest lepszy, nie jest gorszy, jest po prostu inny.

Napisany przez: Spawnm 13.10.2010, 14:05:15

Co do schematu od FanFataL to rzeczywiście razi brak model<->vidok.
Bark kontaktu vidoku z modelem wykorzystuje mvp z tego co pamiętam.

Cytat
O ile jeszcze mogę zrozumieć brak strzałeczki z Modelu do Widoku (bo środowisko webowe uniemożliwia istnienie takiej), o tyle brak strzałeczki z Widoku do Modelu

Zobacz jak działają modele typu pager smile.gif

Co do
Cytat
jak ktoś nazywa przykładowo AJAXa językiem

Jako że miałem styczność z takimi osobnikami i sam byłem pytany czemu tylko js a nie ajax -
Mówiąc programuję w ajaxsie osoba ma na myśli javascript z ajaxem. To tak jak kiedyś rozbijano js na zwykły js i js z dhtml.
Dziś już się tego nie spotyka , wszyscy już się przyzwyczaili że js ma getElementById() ale pojawił się ajax więc jest nowa moda.
Osobiście jednak wolę gdy ktoś mówiąc js ma na myśli js z wszystkimi bajerami winksmiley.jpg

Napisany przez: sniver 13.10.2010, 15:03:11

ajax, ajaksem...z definicji jest to połączenie aplikacji z serwerem i przeładowanie części strony bez konieczności ponownego odświerzania. Odbywa się to za pośrednictwem javascript i xml...

no i dobra tyle wiemy, a ja i tak wole format json, a nie xml. No i mniej z nim problemu smile.gif
No i jest implementowany przez jquery...

A najlepsze jest to że każdy piszę że to technologia (wrrr..) jak by to było niewiadome co..a przecież to tylko dodatkowy bajer w java script...
Swoją drogą widzę że w wiki też pisze że to technologia - więc może zmienię zdanie sciana.gif

Co do tych wszystkich wzorców - rozumiem gdy ma to na celu usystematyzowanie i stworzenie wszędzie "takiego samego kodu". Wiele z firm dlatego wykorzystuje ZF, Kohane czy inny fw. Czy jest to warunek konieczny? Według mnie nie - bo i tak efektem działania tego całego zamieszania jest..uwaga: zwykła strona www! A klient czy który odwiedza strone i tak nie wie czy to MVC zaimplementowane w PHP, JSP czy innym języku...

Co do tego obrazka @FanFataL przypomina mi się full-ajax'owa aplikacja. Widok odwołuje się do różnych części aplikacji i uzupełnia stronę - ja to tak rozumiem...

Napisany przez: Crozin 13.10.2010, 15:05:30

Cytat
Zobacz jak działają modele typu pager
Szczerze... nie mam pojęcia o co Ci chodzi.

Napisany przez: FanFataL 13.10.2010, 15:19:11

Cytat(Crozin @ 13.10.2010, 12:19:40 ) *
@FanFataL: Łady rysunek, ale brakuje mi w nim jednego - gdzie są strzałeczki pomiędzy Widokiem, a Modelem? - bo to one są w sumie najważniejsze. I dlaczego dane płyną przez kontroler, skoro Widok powinien sam odpytać Model, odpowiednio go do tego przygotowując wcześniej?

Rysunek nie mój, ale ładny dlatego wybrałem smile.gif

Cytat(Crozin @ 13.10.2010, 12:19:40 ) *
O ile jeszcze mogę zrozumieć brak strzałeczki z Modelu do Widoku (bo środowisko webowe uniemożliwia istnienie takiej), o tyle brak strzałeczki z Widoku do Modelu i podpis "Resulting Data Arrays" z Modelu do Kontrolera (gwoli ścisłości: Model może zwracać do Kontrolera jakieś dane, ale nie w celu przekazania ich przez ostatniego do Widoku) to zaprzeczenie idei tego wzorca.

Masz racje że brakuje tej strzałki - w większości Fw można taki rezultat osiągnąć bez problemu.

Cytat(Crozin @ 13.10.2010, 12:19:40 ) *
Schemat, który pokazałeś to model wykorzystywany w większości FW. I dobrze! On jest całkiem dobry, sam pracując w PHP z reguły z czegoś takiego korzystam. Ma nawet swoje zalety względem MVC. Ale... on nie ma wiele wspólnego z MVC samym w sobie. Istnieje trójpodział aplikacji, ale działa on inaczej niż w przypadku tego cholernego MVC. Co więcej taki schemat z reguły oznacza, że Kontroler wykonuje większość logiki, która powinna spocząć na Widoku, a ten ostatni jest ograniczany do szablonów HTML/PDF/innych.

Inność polega tylko (albo aż) na miejscu wykonywania logiki.

Cytat(Crozin @ 13.10.2010, 12:19:40 ) *
I o to rozchodzi się cały problem. Kod, który od początku nie jest pisany z założeniami MVC, jest nazywany kodem MVC. Nie byłoby problemu, gdyby nazywano go kodem XYZ, który wywodzi się z MVC, ale nazywanie czegoś diametralnie innego (bo to już nie jest modyfikacja, to jest kompletnie inna architektura) czymś czym nie jest?
Ot weźmy takiego MVP. "Twórcy" wzięli MVC, przerobili go i trzeźwo myśląc uznali, że modyfikacje są na tyle duże, że to już nie jest MVC - więc nazwali to sobie MVP. O ile się nie mylę w przypadku takiego MVVM było podobnie. MVA - też podobnie.

Dokładnie masz racje, samo MVP jest wykorzystywane praktycznie w każdym Fw ale dalej uważam że wszystkie frameworki które są pisane o wzorzec MVC (nawet jeśli są jego modyfikacją) nie robią nic złego w tym że wykorzystują trzy literki M V C.

Żeby było jasne, zgadzam się że to nie jest Full Strict MVC ale nie waham się mówić że używając np ZendFramework wykorzystuje podwaliny MVC - bo z tego się wywodzi.

Cytat(sniver @ 13.10.2010, 14:03:11 ) *
Co do tego obrazka @FanFataL przypomina mi się full-ajax'owa aplikacja. Widok odwołuje się do różnych części aplikacji i uzupełnia stronę - ja to tak rozumiem...

Tutaj nie ma znaczenia czy to ajax czy nie ajax. To jest reprezentacja uporządkowanego działania aplikacji webowej.

Btw. Chyba jest to lekki EOT

Pozdrawiam winksmiley.jpg
...

Napisany przez: sniver 13.10.2010, 15:30:31

@FanFataL: Co to znaczy EOT?

Napisany przez: Crozin 13.10.2010, 15:48:11

Cytat
Inność polega tylko (albo aż) na miejscu wykonywania logiki.
Nie, nie tylko o miejsce chodzi. W MVC mamy w pewnym sensie podział na logikę widoku (tj. widok) i kontroler. W dodatku widok może wykorzystać szablony. Natomiast chyba wszystkie PHPowe FW zaprojektowane są tak, że widok = szablon (co jest już bardzo poważnym uchybieniem), a kontroler zajmuje się logiką widoku.
Tą różnicę chyba najlepiej widać w admin generatorze Symfony 1.x. FW ten realizuje właśnie taki "mvc" i jak wygląda w nim generowanie panelu admina (korzystając z generatora)? Zamiast zrobić coś w stylu:
  1. public function listAction() {
  2. return new ListView(new NewsModel());
  3. }
I tak dla każdego Modelu, to nie... wszystkie kontrolery/szablony muszą być generowane. ListView, FilteredListView, FormView, DetailView - trzy widoki wystarczyłyby do wyświetlania właściwie wszystkiego. Później kontrolery ograniczają się do wybrania odpowiedniego modelu (np. aktualności, posty etc.).

PS. Kilka miesięcy temu spłodziłem taki post: http://forum.php.pl/index.php?s=&showtopic=152827&view=findpost&p=771967 Przedstawiłem tam przykładową (bardzo prymitywną) implementację "web-MVC". Jak widzisz diametralnie różni się to od schematu typowych PHPowych FW.

Napisany przez: marcio 13.10.2010, 15:57:37

@sniver http://pl.wiktionary.org/wiki/EOT

Co do tematu to tez zgadzam sie z tym ze jesli dana aplikacja jest zaprojektowana w sposob gdzie widok = szablon to jest blad bardzo to ogranicza i do tego powoduje ze nawet nie mozna zaimplementowac "mvc"

Napisany przez: destroyerr 13.10.2010, 16:07:17

@Crozin symfony jednak ma widok w Twoim rozumieniu, zresztą podobnie jak Agavi (tutaj jest to jeszcze lepiej zorganizowane). To, że nie zostało to wykorzystane do AG to się zgadzam i żałuję.

Napisany przez: Zyx 10.12.2010, 20:47:50

Kilka tygodni temu jako podsumowanie tej dyskusji postanowiłem zebrać wiadomości nt MVC do kupy w postaci artykułu Wikipedii z odpowiednimi przypisami.

http://pl.wikipedia.org/wiki/Model-View-Controller

Artykuł jest nieźle uźródłowiony i podaje definicję tego wzorca zgodnie z pierwszą pracą go opisującą datowaną na 1979 rok, a także późniejszymi klasykami takimi, jak "Wzorce projektowe: Elementy oprogramowania obiektowego wielokrotnego użytku". Dodatkowo znalazłem świetny katalog opisujący wzorce architektoniczne rozwijany przez pana Martina Fowlera, gdzie jest sporo na ten temat. Jest też m.in. oryginalna praca wprowadzająca Model-View-Presenter.

Kwestia tego, że oryginalnie wzorzec był zdefiniowany dla aplikacji desktopowych wiele tu nie zmienia, bo są to de facto dalej te same założenia, tylko uwzględniające specyfikę środowiska web i niekolidujące z oryginałem (w sensie: jak robimy aplikację WWW, musimy z konieczności korzystać z wariantów dla aplikacji WWW). Jednak z tych wszystkich materiałów dość jasno wynika, że w świecie frameworków WWW coś takiego, jak MVC zasadniczo nie istnieje. Zawsze są to jakieś pochodne oryginału... tyle że mają one swoje własne nazwy i w żadnym wypadku nie są MVC. Dominują:

- Model-View-Presenter - uproszczenie modelu i widoku na rzecz warstwy prezentera.
- Model-View-Presenter z Pasywnym Widokiem - jw. + zerwanie połączenia między modelem, a widokiem.

Jedna Kohana coś tam niby kombinuje, ale co - nie wiadomo, bo autorzy dalej lecą sobie w kulki z dokumentacją. Ponadto w przypadku hierarchicznych odmian jeszcze się tak do końca nie dokopałem do oryginalnych źródeł.

Dodatkowo, w ramach eksperymentu rozwijam na Githubie framework mający implementować założenia MVC (tego prawdziwego): https://github.com/zyxist/Trinity/tree/lightweight - i generalnie pisze się w nim zupełnie inaczej, niż w popularnych frameworkach, co moim zdaniem dość dobrze świadczy, gdzie są frameworki, a gdzie MVC.

Napisany przez: cojack 3.01.2011, 20:35:54

Cytat
(tego prawdziwego):[

Napisany przez: phpowiec84 3.01.2011, 20:54:25

Witam
Jakis czas temu wykonałem framwork którym do tej pory sie posługuje ,jego schemat działania wygląda tak :

http://www.fotosik.pl/pokaz_obrazek/ce6473e3d0258aca.html

ciekaw jestem waszych opini na jego temat .

Pozdrawiam

Napisany przez: thek 3.01.2011, 21:26:11

Cojack... Nie bądźmy złośliwi winksmiley.jpg Czysty MVC jest nie do zaimplementowania w architekturze webowej i każdy rozumiejący ten wzorzec programista jest w pełni tego świadom. Mozna sobie rzeźbić i cuda wymyślać, ale pewnych możliwości MVC w komunikacji webowej nie uzyskasz, bo nie pozwala na to protokół. Bylo to już poruszane wielokrotnie. Zyx na pewnoma ten sam problem i jak mniemam zastosuje jakąś technikę mającą emulować brakujące formy komunikacji pomiędzy warstwami, na które http nie pozwala. Rozumiem, że pewne rzeczy mogą Ci nie pasować, ale moim zdaniem spośród osób tutaj siedzących ma on jedne z największych doświadczeń jeśli chodzi o "bebechy" stojące za tym wszystkim i z racji, tego to co rzeźbi jako autorski framework, może być ciekawe. Na razie się nie zagłębiam w niego, ale gdy wyjdzie jakaś wersja oficjalna, to chętnie przejrzę, bo być może sam coś z jego pomysłów uznam za wartościowe/nowatorskie rozwiązanie. Poza tym czytając to co piszę ja i co pisze on, to trudno nie zauważyć, że akurat oboje uznajemy, iż to co wiele frameworków nazywa MVC, nie jest nim, tylko pewnym wariantem zmodyfikowanym na tyle by był implementowalny dla sieci web. Tak więc jeśli coś ma implementować założenia MVC lepiej, to chętnie zobaczę JAK ma to robić zamiast marudzić smile.gif

Napisany przez: Zyx 3.01.2011, 22:34:02

phpowiec84 -> fajne te zaokrąglone ramki. Niezła czcionka przy numerkach. A na serio może byś tak rozwinął trochę tę myśl nieco?

Napisany przez: cojack 3.01.2011, 23:05:56

thek no ale tego

Cytat
(tego prawdziwego)
nie rozumiesz?

Napisany przez: thek 4.01.2011, 12:19:22

Najprawdopodobniej moje rozumienie wzorca MVC jest bardziej zbieżne z tym co podają dokumentacja, książki i Zyx, zamiast tym co próbują frameworki nazwać MVC smile.gif

Napisany przez: Cysiaczek 4.01.2011, 13:26:29

Wy nadal to samo...

Pisanie czegokolwiek po to tylko, aby implementowało jakiś wzorzec jest całkowicie sprzeczne z tym, co jest ideą wzorca projektowego, mianowicie dobrego i sprawdzonego sposób rozwiązania problemu. Nazwa jest tylko po to, aby można było łatwiej zapamiętać, zaprezentować i przedyskutować możliwe rozwiązania. Skoro żaden webowy FW nie implementuje prawdziwego wzorca MVC, to należy zadać pytanie, dlaczego tak się dzieje, że setki doskonałych programistów nie widzi zalet takiej idealnej implementacji i jej do tej pory nie zrealizowało w żadnym powszechnym frameworku? Hmm? Ja myślę, że to dlatego, że taka implementacja generuje więcej problemów (przynajmniej w świecie programowanie webowego) niż rozwiązuje.
Jednak sama architektura trójwarstwowa jest w porządku, więc modyfikują MVC w takim stopniu, aby nie stracił nic ze swego ducha i po prostu wdrażają. Potem 100 innych gości wpada na to samo, 50 z nich lubi klasyfikować różne rzeczy, więc dla odróżnienia nazywają to coś wspólne MVP i dzięki temu prowadząc akademickie dyskusje mają uszczegółowioną siatkę pojęć. Pozostałych 50, którzy mają w głębokim poważaniu ten podział, robi w tym czasie narzędzia implementujące ideę podziału na logikę działań, kontrolę pracy i prezentację wyników, w skrócie LCV.

Wracam do pracy.

Napisany przez: wookieb 4.01.2011, 14:10:52

Cytat
Pisanie czegokolwiek po to tylko, aby implementowało jakiś wzorzec jest całkowicie sprzeczne z tym, co jest ideą wzorca projektowego, mianowicie dobrego i sprawdzonego sposób rozwiązania problemu. Nazwa jest tylko po to, aby można było łatwiej zapamiętać, zaprezentować i przedyskutować możliwe rozwiązania.

Dziwne podejście. Mianowicie popieram działania Zyx-a. Jak dla mnie jest on purystą językowym i jest to jak najbardziej w porządku. Dzięki takim osobom nie mówimy na jabłko "bardziej okrągła gruszka o smaku jabłka".
Ludzie mają tendencję do używania słów, skrótów których do końca nie rozumieją np z samolubnych przyczyn (chcą pokazać jakimi to sa znawcami, specjalistami lub marketingowcami). Dzięki temu np karta graficzna nie nazywa się "Karta graficzna od Nvidia wersja 105" tylko "super Hiper turbo 512 ultra god contact wireless graphic card". To samo się tyczy frameworków
Ileż to ja już widziałem "szybkich", "skalowalnych", "łatwych do zarządzania" frameworków wspierających RSS, HTML5 (to już jest maksymalnie nadużywane), FLASH, JS, AJAX itd itd.
Taka weryfikacja jest najbardziej na miejscu.

Cytat
Skoro żaden webowy FW nie implementuje prawdziwego wzorca MVC, to należy zadać pytanie, dlaczego tak się dzieje, że setki doskonałych programistów nie widzi zalet takiej idealnej implementacji i jej do tej pory nie zrealizowało w żadnym powszechnym frameworku? Ja myślę, że to dlatego, że taka implementacja generuje więcej problemów (przynajmniej w świecie programowanie webowego) niż rozwiązuje.

Co wcale nie znaczy, że powinni nazywać implementacji od jej "rodziców" bo psujesz w ten sposób naturalny porządek nazewnictwa.
Np jak dymasz córkę Oli to nie znaczy, że dymasz Olę.
Jak ty napiszesz zarąbisty system na jakim zarabiasz krocie a ktoś zrobi taki drugi i nazwie "TwojaNazwaSystemu2" to zrozumiesz co tzn "akademicka dyskusja".

Napisany przez: thek 4.01.2011, 15:00:08

A prawda jak zwykle pośrodku winksmiley.jpg Cysiaczek ma rację co do niepotrzebnego popadania w szczegóły. W końcu ma to działać, bo to najważniejsze. No i faktycznie pełna implementacja MVC w środowisku webowym jest niemożliwa z racji cudowania między modelem i widokiem, które nie mają możliwości mieć prostego połączenia, bez uciekania się do nowego żądania, które jest kolejnym, głębiej ukrytym MVC. Ale Zyx i wookieb mają racje co do złego nazywania. Niektórzy bratka nazwali by różą bo obie rośliny to kwiaty, więc co to za różnica? Analogicznie twórcy frameworków MVP nazywają je MVC bo to bardziej chwytliwe i znane "słowo-klucz", a mają podział na 3 warstwy odpowiedzialne za określone działania, więc co to za różnica czy ostatnia literka to P czy C? Równie dobrze możesz właścicielowi rodowego psa powiedzieć, że ma kundla winksmiley.jpg On to rozumie zupełnie inaczej niż Ty. Dla niego kundel to mieszaniec, pies bez rodowodu. Dla Ciebie kundel = pies w bardziej negatywnym znaczeniu (może kiedyś zawarczał na Ciebie i go nie lubisz). Dwa różne punkty widzenia na to samo słowo. Kłótnia jakakolwiek nie ma tu sensu. Dla mnie MVC jest w środowisku web nieimplementowalny i tyle. Każdy kto twierdzi inaczej jedynie się zbliża do niego bardziej niż inni i tyle, ale nic więcej. Pewnych barier nie przeskoczy, a to one sprawiają, że MVC jest niemożliwy do uzyskania w czystej postaci.

Napisany przez: wookieb 4.01.2011, 15:21:18

Cytat(thek @ 4.01.2011, 15:00:08 ) *
Niektórzy bratka nazwali by różą bo obie rośliny to kwiaty, więc co to za różnica? Analogicznie twórcy frameworków MVP nazywają je MVC bo to bardziej chwytliwe i znane "słowo-klucz", a mają podział na 3 warstwy odpowiedzialne za określone działania, więc co to za różnica czy ostatnia literka to P czy C? Równie dobrze możesz właścicielowi rodowego psa powiedzieć, że ma kundla winksmiley.jpg On to rozumie zupełnie inaczej niż Ty.

No właśnie po to jest tyle nazw, żeby porozumiewać się posługiwać się tymi nazwami pomiędzy ludźmi. 1 literka w nazwie jakiegoś leku to już nie "puryzm" tylko czyjeś zdrowie, życie. Oczywiście jest to przykład skrajny. Ale naprawdę nie po to Procesor nazywa się procesorem, żeby ludzi nazywali go za każdym razem "taka mała kostka krzemu, która 'myśli'" (co naprawdę wymagałoby dodatkowego rozwinięcia bo w komputerze masz jeszcze więcej "MIKROprocesorów"). To nie jest niepotrzebny szczegół bo niektórzy potrafią to nazwać "komputerem". Przekażą ta "wiedzę" innym i nagle firma Intel nie zajmuje się tworzenie procesorów a "komputerów". Bałagan? Oczywiście. Im więcej błędów w nazewnictwie tworzymy sami, tym więszky chaos. Skoro uważasz, że MVC a MVP nie jest dla kogoś ważne to tak naprawdę ten ktoś jest takim programistą który powinien siedzieć w domu z brakiem możliwości komunikacji z innymi programistami bo może się tylko ośmieszyć a nie daj boże nauczać innych takich "herezji". Nie rozumiecie naturalnego porządku i CELU nadawania czemuś nazwy.

Napisany przez: thek 4.01.2011, 16:10:47

Z komputerem i prockiem to trochę zły przykład winksmiley.jpg Komputer to w najbardziej pierwotnej wersji architektury (von Neumanna) urządzenie posiadające jednostkę obliczeniową, pamięć i jakąś formę urządzeń I/O. Od biedy wystarczyło by do procka podpiąć jakiś czujnik i by działał w oparciu tylko o swoja pamięć cache z wbudowanym programem. Jak chce, ale działałby winksmiley.jpg

Napisany przez: wookieb 4.01.2011, 16:15:36

No i właśnie to co ty teraz zrobiłeś jest popadanie w szczegóły przykładu, który nie miał na celu wskazanie dokładnych znaczeń słów "procesor" i "komputer" a jedynie wykazać istotę potrzeby nazywania pewnych rzeczy.
Na temat porównania co rzeczywiście jest procesorem a komputerem z "definicji" można prowadzić ogromny wywód który zrobiłby to samo co Zyx na temat MVC.
P.s. Przypominam post o analizie twej osobowości - punkt o "zmianie tematu"

Napisany przez: thek 5.01.2011, 00:38:33

To co wskazałem to oczywiście przesada jak sam zauważyłeś. Dla większości ludzi komputer to takie pudełko duże lub nieco mniejsze i ma jakieś tam podzespoły. Dla informatyka, a nimi przecież oboje jesteśmy, to pewna "fizyczna implementacja" jakiejś architektury. To samo tyczy także wzorców architektonicznych. Dla ogółu to po prostu taka czarna skrzynka, którą z grubsza rozumieją po swojemu. Nie zawsze w sposób prawidłowy. To potem prowadzi do nieporozumień. Przykłady mamy także na forum tutaj. Ktoś coś chce, nie do końca rozumie czego chce, a używa terminologii w sposób niewłaściwy, co tylko nas wprowadza w błąd. My się wkurzamy, on się wkurza. Ile nieporozumień można by uniknąć gdyby określone zwroty czy frazy były jednoznaczne dla obu stron? A tak mamy galimatias, bo myśli się A, opisuje się to jako B, a inna osoba z tego wszystkiego rozumie C.

Tak więc nie chodzi mi tu o rozmycie tematu, ale ustalenie jednolitej definicji co jest czym. Zauważ, że ludzie mają problem nawet by określić co ma być w której warstwie wzorca MVC. Potem pakują do kontrolera to, co ma być w modelu i robi się syf. Oczywiście nie widzą tego, bo nie rozumieją do końca tego co robią i na czym określony wzorzec polega oraz co wynika z zastosowanych przez nich założeń czy środowiska. Taki się uprze, że to jest MVC i mu nie przegadasz, że się myli. Tylko że właśnie przez takie mylenie pojęć ludzie tylko tracą i czas i nerwy.

Ja osobiście nie lubię marketingowego bełkotu tylko łapie za specyfikację lub dokumentację i tyle. Więcej z niej zrozumiem. I kij z tym, że nieraz zasypie mnie kilkadziesiąt stron czy więcej. Przynajmniej to jest zazwyczaj pisane językiem ustandaryzowanym, a nie bełkotem. Weź sobie głupie kółka z tymi 3 literkami i narysuj możliwe w sieci web połączenia między nimi, a od razu stanie sie jasne, że MVC jest niemożliwy do implementacji. Ja to wiem, Zyx to wie, Ty też to wiesz i Cysiaczek także. Tyle że nie każdy z naszej czwórki przystaje na takie uproszczenia i to jest przyczyną tutejszej niezgodności.

A to co napisałem tyczy nie tylko MVC, ale każdego dowolnego wzorca projektowego. Dopóki nie będzie jednolitego standardu i dopóki ludzie na A będą mówili B to musi taki bajzel być czy to sie nam podoba czy nie. Nie sądzę by był sens ciągnąć dalej wątek co jest a co nie jest MVC bo i tak utkniemy na osobistych preferencjach, a nie rzeczowych argumentach. Dla mnie wykładnikiem są książki i twórcy tego wzorca, a nie jego implementacja przez frameworki i tego pierwszego się będę trzymał, choć ktoś inny da się przekonać i mnie by za takie podejście zjechał. Nie ma naprawdę sensu robić flame'a, bo i tak nas to nigdzie nie zaprowadzi. Jedynie wywoła kolejne akademickie dysputy. Mało ich już jest na innych stronach? Może niech ktośzłapie sie za inny wzorzec i to jego omówimy równie dogłębnie jak MVC? Przynajmniej byłby wtedy jakiś pożytek z tych rozważań na poziomie akademickim. Bo te 3 literki to już chcą mi uchodzić każdym możliwym otworem ciała winksmiley.jpg

Napisany przez: Cysiaczek 7.01.2011, 18:27:48

Nie miałem zamiaru uderzać w system nazewnictwa. Po prostu uważam, że stawianie sztywnych granic w takiej dziedzinie wiedzy jak wzorce projektowe bywa pozbawione sensu praktycznego i niekiedy jest śmieszne.
Nie chodzi wcale o wyjaśnienie dokładnego działania wzorca na poziomie współpracy jego części, tylko o nadanie sensu, naszkicowanie sposobu w jaki można rozwiązać napotkany problem. To jest podstawowa korzyść wynikająca ze zbierania doświadczeń przez wiele lat. Katalogowanie takich wzorców jest z kolei czynnością, bez której one same nadal pełniłyby swoje funkcje. Im bardziej szczegółowo je katalogujemy ze względu na różne kryteria, tym bardziej rozmywamy ideę. Zgoda, że do typowo "naukowych" rozważań, możemy trzymać się konkretów, ale nie popadajmy w przesadę, bo co jest łatwiej powiedzieć?
- "Architektura trójwarstwowa w rozumieniu takich jakie prezentują MVC i/lub MVP "
czy
- "Takie tam coś jak MVC"
W zwykłej forumowej odpowiedzi na pytanie nowicjusza "Jak ten kod uporządkować?" lepiej powiedzieć "Poczytaj o MVC" lub bardziej ogólnie "o wzorcach" niż "Poczytaj o różnicach między MVC i MVP, bo to niezwykle istotne, bo żaden FW nie implementuje MVC, bo blablabla". Co to obchodzi kogoś, kto szuka ogólnej drogi do rozwiązania ogólnego problemu?

Mała dygresja związana z tym topikiem:

Cytat
+ z jakiego wzorca ty korzystasz ?

Czy nie lepiej zadać pytanie o sposób w jaki Crozin rozwiązuje konkretny problem niż jakiego wzorca używa? Chcesz rozwiązać problem, czy sobie poużywać wzorca? :-)

Czy na wczasy latacie samolotem, jedziecie samochodem, czy też trójsilnikowym Boeingiem 734 lub BMW 330d rocznik 1999? Wzorzec odpowiada tu jedynie na pytanie czym się wybrać na wczasy. Całkowicie bez sensu dla przeciętnego turysty jest wiedza o szczegółach konstrukcyjnych.

Może i tłumaczę oczywiste oczywistości, ale nie rozumiem, dlaczego architektura, której jedynym zadaniem jest podzielenie fizyczne i/lub logiczne szkieletu aplikacji na conajmniej trzy warstwy, z których jedna kontroluje, druga wykonuje zadanie biznesowe, a trzecie prezentuje wyniki nie może nazywać się:
Model
View
Controller

Co mnie obchodzą flaki? Co mnie obchodzi, czy kontroler przekazuje dane do widoku, czy widok czerpie dane z modelu? Na koniec, co mnie obchodzi, czy to jest oryginalne, zgodne z założeniami wzorca MVC opisanego przez tego, czy owego człowieka? Czysta akademicka dysputa o szczegółach, której celem może być tylko wytworzenie jakiejś... specyfikacji wzorców godnej chyba tylko biologii.

Cytat
Np jak dymasz córkę Oli to nie znaczy, że dymasz Olę.

Masz rację, ale także: jeśli już dymasz córkę Oli, to nie każdemu musisz wyjaśniać, że samej Oli już nie dymasz.

To tu jeszcze macie mózgotrzepa http://codebetter.com/jeremymiller/2007/11/01/development-trivial-pursuit-the-difference-between-mvc-and-the-different-flavors-of-mvp/

Napisany przez: Crozin 7.01.2011, 19:50:20

@Cysiaczek: Głupoty piszesz. Mówiąc "MVC" powinno się mieć na myśli konkretną architekturę, ze ściśle określonym sposobem działania i jasno określonymi zależnościami pomiędzy elementami owej architektury. Zmieniając założenia powinniśmy już przestać używać takiej nazwy, bo to jedynie wprowadza w błąd (gdyby od początku nie pisano MVC, MVC, MVC, MVC tylko [tutaj jakaś nazwa dla architektury] nie byłoby żadnego problemu).
MVC nie jest pojęciem dla "przeciętnego turysty", a dla doświadczonego obieżyświata.

To trochę tak jakbyś przyszedł na rajd samochodowy i mówił, że twój samochód z faktycznym napędem na przednie koła ma napęd 4x4 bo przecież cztery koła się kręcą jak jedziesz. Ten pogląd podchwyci grupa ludzi i nagle samochód z toczącymi się czteroma kołami zaczynamy nazywać samochodem z napędem 4x4. I teraz dupa. Bo jak normalni kierowcy mogą mówić o "flakach" swoich samochodów, o tym że jeden ma FWD, drugi RWD a trzeci 4x4, że ten pierwszy powinien wziąć przykład z ostatniego biorąc udział w rajdzie terenowym itd?

Napisany przez: Cysiaczek 7.01.2011, 20:45:38

@Crozin, Pokaż mi konkretny i absolutnie właściwy sposób interpretacji tego... bo już na pewno nie wzorca wg tego co piszesz.
http://pl.wikipedia.org/wiki/Wzorzec_projektowy_%28architektura%29

Napisany przez: Crozin 7.01.2011, 23:08:07

Chyba tutaj chciałeś podlinkować: http://pl.wikipedia.org/wiki/Wzorzec_projektowy_(informatyka) oraz chciałeś zapewne zacytować

Cytat
Elementy wzorca: [...] rozwiązania – opisuje elementy rozwiązania: ich relacje, powiązania oraz obowiązki, zawiera także wskazówki implementacyjne dla różnych technologii;
Mimo iż wiki często bzdury pisze, tutaj ma rację.

O MVC mówimy gdy [tutaj pełne zestawienie obowiązków poszczególnych warstw aplikacji i ich wzajemnych relacji] nie zważając na użyte nazewnictwo czy implementację. O MVC nie mówimy gdy w kodzie w ogóle pojawiają się gdzieś zwroty model, view, controller.

Napisany przez: Cysiaczek 8.01.2011, 20:20:53

Link dałem dokładnie taki jaki chciałem.
Tak, masz rację zgadzając się z wikipedią, zgadzam się też z Twoim opisem MVC i nie widzę powodu dla którego trójwarstwowa architektura posiadająca Widok zajmujący się prezentacją danych, Model odpowiedzialny za logikę biznesową oraz Kontroler zajmujący się obsługą żądania. Tu dopiero pojawia się małe rozróżnienie w relacji miedzy warstwami w przypadku MVC i MVP (pomijam ograniczenia protokołu). Otóż zakłada się i to zupełnie niesłusznie, że w obecnych FW webowych nie można pisać inaczej niż zgodnie ze wzorcem MVP. W MVP to kontroler (presenter) ma za zadanie "obrobić" dane dla widoku

np.

  1. public function executeShow()
  2. {
  3. $this->setVar('name', $request->getParameter('name'));
  4. }


To chwileczkę... nie można po prostu przekazać modelu?
  1. public function executeShow()
  2. {
  3. $this->setVar('MyUserModel', new MyUserModel($request->getParameter('name'))); // widok sobie poużywa tego wg własnego widzimisię
  4. }


Czy nikt nie widzi różnicy jaka zaszła w samej filozofii, w relacjach między warstwami? Może to nie klasyczne MVC, ale z uwagi na znane nam ograniczenia, wypełniamy ten wzorzec, bo widok sobie już sam poradzi, prawda? Przyczepić się można, tylko pytanie po co? Czy nie kieruje się znanym mi wzorcem? Nie udało mi się spełnić wszystkich założeń, to prawda, ale WZORZEC znam i się trzymałem na tyle na ile mogłem. Jak to ktoś potem nazwie inaczej...

Pozdrawiam


Napisany przez: thek 8.01.2011, 21:34:59

Czy ja wiem... Jak dla mnie to podane dwa przykłady nie różnią się wiele jeśli chodzi o efekt końcowy. Czemu? Ponieważ i tak najpewniej do widoku trafią te same dane w obu wypadkach gdyby programista trzymał się minimalizmu. Kto pośle do widoku obiekt z 50 zmiennymi, skoro widok wymaga kilku zaledwie? KISS się kłania. W pierwszym wypadku zapewne kontroler gdzieś i tak wywoła model by mu te dane podesłał. Czy będzie taka różnica wielka między wysłaniem żądania danych do modelu by potem te dane (zapewne nawet nie tknięte jakąkolwiek metodą, helperem, whatever) wysłać do widoku (który i tak sobie je zinterpretuje wedle wewnętrznych mechanizmów), a bezpośrednim zestawieniem modelu i widoku? Dla mnie to tylko ciut inny zapis. Różnica w 2, góra 3 linijkach. Ogólnie to co napisałeś to więc nadal nie MVC dla mnie. Gdyby jedynym parametrem było tylko określenie widoku to bym się zgodził. zauważ, że w obu wypadkach i tak nakazujesz by widok skorzystał z określonych danych, tylko raz dajesz mu już konkretne, a w tym drugim mówisz by użył konkretnego modelu. Tak czy inaczej wymuszasz zestawienie tylko że albo pośrednio, albo bezpośrednio.

IMHO MVC ma miejsce gdy kontroler nawet nie musi zestawiać tego połączenia. Kontroler woła po prostu model, który sam decyduje, patrząc na dane, jaki widok wywołać. I vice versa. Kontroler chce dane w określonym widoku, a ten na podstawie owego żądania określa jaki model ma wywołać. Zauważ, że w www jest trudno uzyskać taką autonomię warstw. Trudno bowiem by widok widoczny u usera samodzielnie wywołał model na serwerze bez udziału pośrednika przetwarzającego żądanie. I stąd mamy MVP, czyli to Presenter wie jakie pary modelu i widoku wywołać, by je zestawić. Dzięki temu ten sam element może być wykorzystywany wielokrotnie do różnych celów. Najważniejszy jest tylko "styk" modelu i widoku. Muszą tutaj dane być identyczne zarówno dla strony wysyłającej, jak i odbierającej by zestawienie się powiodło. Jeśli wybiorę widok to musi mi Presenter podesłać dane przez ów widok wymagane. A to, z jakiego modelu, to już mało istotne. Z kolei wybierając model Presenter musi określić w jakiej formie zwrócić. Czy widokiem ma być plik strony www czy może wygenerowany pdf. I właśnie tak działają chyba niemal wszystkie frameworki php. Jawnie zestawiasz te połączenia. To dalekie od autonomii warstw.

Napisany przez: Cysiaczek 8.01.2011, 23:00:00

IMHO różnica jest dość ostra, w drugim przypadku mamy relację widok-model, w pierwszym jedynie jakąś anonimową daną smile.gif

Napisany przez: thek 8.01.2011, 23:27:31

Jak dla me różnica jest tylko taka, że w 1 przypadku dostajesz gotowe dane, zaś w 2 obiekt danego modelu. Tak więc to co robi zazwyczaj Presenter scedowałeś na Widok. A mimo to i tak w razie konieczności zmiany widoku lub modelu musiałbyś wrócić do Presentera ponownie by wykonał operację zamiany. Tak więc jedynie moim zdaniem poprzerzucałeś część zadań między warstwami lub prościej pisząc: uprościłeś Presenter za cenę skomplikowania Widoku.

Napisany przez: Crozin 9.01.2011, 14:50:19

Niektórzy zapomnieli, że w MVC warstwa widoku to nie tylko bezmyślne wyświetlanie danych. Mimo wszystko... kolejny wątek zmienił się w pierdolnik o tym czym MVC jest, a czym nie jest, więc czy jakiś moderator mógłby go wydzielić ten fragment dyskusji do innego wątku?

Napisany przez: quality 18.02.2011, 15:48:32

@Crozin piszesz ze MVC nie jest stworzone do HTTP, to mam rozumiec ze wszelkiego rodzaju serwlety JAVA rowniez go nie moga obslugiwac ? To przeciez tez HTTP smile.gif

Napisany przez: baldRASCAL1986 18.04.2011, 13:06:40

Nie mogę zrozumieć jednej rzeczy... Po co ciągle wykłócacie się o nazewnictwo wzorca projektowego ? Ja wiem że jest to żywa pogadanka na pewien temat, ale chyba założenia tematu są nieco inne. Po to tutaj jesteśmy żeby wymyślić jakieś nowe podejście, nowy obraz na dany temat ( np. jak to robi ZyX ). Także jeśli mogę prosić, od tej pory opierajmy się tylko na konkretach, z których coś wyniknie. Za to wielkie dzięki!

Napisany przez: marcio 5.05.2011, 13:55:46

dyskusja umarla smiercia naturalna....wink.gif

Napisany przez: Sagnitor 5.07.2011, 15:16:04

A jakby tak spojrzeć na to z innej strony. Czy jest wzorzec, który powstał z myślą tylko i wyłącznie o środowisku HTTP? Jeżeli nie, to warto taki opracować. Może na razie jest to gdybanie, ale warto spróbować. Nowatorski wzorzec biorący pod aspekty wszystkie cechy webowych aplikacji. Bez podciągania pod MVC, MVP, HMVC i inne...

Co wy na to? wink.gif

Napisany przez: LSM 25.09.2011, 23:11:07

Dorzucę swoje trzy grosze.
Ciekawym jest fakt, że "twórcy" wzorców, a przynajmniej główni propagatorzy czyli banda czworga w swojej książce katalogu wzorców traktują MVC jako złożenie wzorców i w ogóle go nie ma w tym katalogu jako wzorzec. Co ciekawe na początku książki opisują jednak MVC oraz z czego się składa i jakich wzorców używa.
Także z jednej strony mamy wzorzec złożony MVC który korzysta z innych wzorców, a z drugiej wzorzec MVC który sam w sobie jest czystym wzorcem ?

Ja byłbym skłonny uznać MVC bardziej za koncepcję aniżeli osobny wzorzec. Jeśli uznamy MVC za koncepcję wszelka dyskusja nt. nazewnictwa hMVC, sMVP jest bezużyteczna, bo to jedynie kolejne koncepcje wykorzystania wzorców czy mechanizmów logicznych wędrówki danych.

A co jeśli ja przedstawię taką implementację koncepcji (!) MVC:
M - model obsługiwany przez C++ i OracleDB
C - obsługiwany przez PHP
V - widok obsługiwany przez Javascript i HTML (przeglądarka www w komputerze stacjonarnym, telefonie, telebimie)

Komunikacja między trzema warstwami logicznymi odbywa się poprzez SOAP. Czym będzie taka implementacja rozdziału logicznego aplikacji ? Będę mógł powiedzieć: mój program został napisany przy użyciu MVC ?

Napisany przez: Crozin 25.09.2011, 23:18:32

@LSM: To co pokazałeś to jedynie podział aplikacji na różne warstwy (chociaż akurat V to powinno być coś co generuje HTML / JS, a nie przeglądarka). MVC i cała reszta natomiast konkretnie określają sposób w jaki tych kilka warstw współpracuje ze sobą. I robią to dosyć precyzyjnie. Tak więc jeżeli w Twojej aplikacji poszczególne warstwy współgrają ze sobą zgodnie z definicją tego cholernego MVC, wtedy możesz z czystym sumieniem powiedzieć, że implementują ten wzorzec.

Napisany przez: LSM 25.09.2011, 23:25:27

Widok opisuje, jak wyświetlić pewną część modelu w ramach interfejsu użytkownika. Ale nie mówi nam jak mamy to robić. Na tym polega wzorzec że nie jest sprecyzowany. Jak na niego patrzymy to widzimy trzy kulki ze strzałkami - reszta należy do naszej wyobraźni.

Ok nazwę swój wzorzec: ProtocolBased MVC, albo nie, SOAP-fucking-brutal-MVC, Jahuuu exclamation.gif! ;-)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)