,
[ Pobierz całość w formacie PDF ]
.Potrzebujemy, oczywiÅ›cie, informacji o aktualnie rozgrywanym spotkaniu o grajÄ…cych zespoÅ‚ach, warunkach atmosferycznych, graczu z kijem, wyniku itp.Wymienione elementy skÅ‚adajÄ… siÄ™ na nasz model i sÄ… aktualizowane w miarÄ™pojawiania siÄ™ nowych informacji (o zmianie zawodnika rzucajÄ…cego piÅ‚kÄ™, o nie-udanej próbie trafienia w piÅ‚kÄ™, o poczÄ…tku ulewy itp.).Musimy też przygotować szereg obiektów widoków, które bÄ™dÄ… używaÅ‚y tych mo-deli.Jeden widok może odpowiadać za analizÄ™ biegnÄ…cych zawodników i ak-tualizacjÄ™ bieżącego wyniku.Inny widok może otrzymywać powiadomienia o no-wych zawodnikach odbijajÄ…cych oraz podsumowania ich statystyk z ostatniegoroku.Trzeci widok może analizować zbierane dane i sprawdzać, czy nie pobitoÅ›wiatowych rekordów.Możemy nawet zaimplementować widok odpowiedzialnyza gromadzenie wszystkich tych dziwacznych i nieprzydatnych informacji, którepotrafiÄ… zelektryzować widowniÄ™.Nie chcemy, aby bezradny komentator byÅ‚ bezpoÅ›rednio zasypywany informa-cjami ze wszystkich tych widoków.WolelibyÅ›my raczej, aby każdy widok ge-nerowaÅ‚ powiadomienia o interesujÄ…cych zdarzeniach i aby jakiÅ› obiekt wyższe-go poziomu decydowaÅ‚ o kolejnoÅ›ci prezentowania tych informacji na monitorzekomentatora9.Obiekty widoku nagle stajÄ… siÄ™ modelami dla obiektu wyższego poziomu, którysam może być modelem dla jeszcze innych widoków odpowiedzialnych na przykÅ‚ad9To, że nad stadionem przelatuje samolot, prawdopodobnie nie ma żadnego znaczenia,chyba że jest to setny samolot przelatujÄ…cy nad boiskiem od poczÄ…tku spotkania.180 uð RozdziaÅ‚ 5.Zegnij lub zÅ‚amza odpowiednie formatowanie informacji.Jeden widok formatujÄ…cy może odpo-wiadać na przykÅ‚ad za wyÅ›wietlanie tekstu na prompterze komentatora; innywidok może generować komunikaty nakÅ‚adane na obraz transmitowany dosatelity; jeszcze inny widok może aktualizować strony internetowe stacji telewi-zyjnej lub zespoÅ‚u (patrz rysunek 5.5).Rysunek 5.5.Widoki jako subskrybenci modeli na potrzeby transmisji z meczu baseballowegoTego rodzaju sieci model-widok sÄ… dość popularnÄ… (i pożądanÄ…) technikÄ… pro-jektowÄ….Każde poÅ‚Ä…czenie pozwala odizolować oryginalne dane od zdarzeÅ„, któreje utworzyÅ‚y, a każdy nowy widok stanowi dodatkowÄ… abstrakcjÄ™.A ponieważposzczególne zwiÄ…zki skÅ‚adajÄ… siÄ™ na sieć (a nie liniowy Å‚aÅ„cuch powiÄ…zaÅ„), zy-skujemy ogromnÄ… elastyczność.Każdy model może mieć wiele widoków, a poje-dynczy widok może współpracować z wieloma modelami.W zaawansowanych systemach (jak ten, który opisano w tym punkcie) wartorozważyć zastosowanie dodatkowych widoków diagnostycznych, czyli wyspe-cjalizowanych widoków odpowiedzialnych za prezentowanie szczegółowych in-formacji o modelu.Innym przydatnym rozwiÄ…zaniem jest uzupeÅ‚nienie systemuo mechanizm Å›ledzenia poszczególnych zdarzeÅ„.PowiÄ…zania wciąż istniejÄ…(mimo tylu lat doÅ›wiadczeÅ„)Mimo niewÄ…tpliwych osiÄ…gnięć w kwestii eliminowania zwiÄ…zków obiekty nasÅ‚u-chujÄ…ce i generatory zdarzeÅ„ (subskrybenci i wydawcy) wciąż dysponujÄ… pewnÄ…wiedzÄ… na swój temat.Na przykÅ‚ad w Javie muszÄ… uzgadniać wspólne definicjeinterfejsu i spójne konwencje wywoÅ‚aÅ„.Tablice tð 181W nastÄ™pnym podrozdziale przeanalizujemy sposoby dalszego eliminowaniazwiÄ…zków poprzez stosowanie modelu publikowania i subskrypcji, w którymżaden z uczestników tego procesu nie musi ani dysponować wiedzÄ… na tematdrugiej strony, ani bezpoÅ›rednio wywoÅ‚ywać jej funkcji.Pokrewne podrozdziaÅ‚ylð Ortogonalność w rozdziale 2.lð Odwracalność w rozdziale 2.lð Izolacja i prawo Demeter w rozdziale 5.lð Tablice w rozdziale 5.lð Pisanie przede wszystkim w rozdziale 8.wiczenia29.Przypuśćmy, że dysponujemy systemem rezerwacji biletów lotniczych, Patrzodpowiedz 29.w którym lot jest definiowany w nastÄ™pujÄ…cy sposób:w dodatku B.public interface Flight {// Zwraca false, jeÅ›li nie ma wolnych miejsc.public boolean addPassenger(Passenger p);public void addToWaitList(Passenger p);public int getFlightCapacity();public int getNumPassengers();}Pasażer dodany do listy oczekujÄ…cych automatycznie otrzyma rezerwacjÄ™ w mo-mencie zwolnienia miejsca przez innego pasażera [ Pobierz caÅ‚ość w formacie PDF ] |