Article View: pl.comp.objects
Article #13868Re: Czy observer ma prawo zablokować zmianę stanu obserwowanego obiektu ?
From: giku1
Date: Fri, 03 Feb 2006 11:26
Date: Fri, 03 Feb 2006 11:26
82 lines
4230 bytes
4230 bytes
Filip Sielimowicz wrote: > > Użytkownik "a1" <a1@no.spam> napisał w wiadomości > news:drpqhk$2o8$2@inews.gazeta.pl... > >> Sektor van Skijlen wrote: >> > Dnia Tue, 31 Jan 2006 14:19:45 +0100, Filip Sielimowicz skrobie: >> >> > Wygląda na to, że można. >> > >> > Known Uses >> > >> > Smalltalk Model/View/Controller (MVC). User interface framework while >> Model is >> > subject and View is observer. >> >> > Skoro za pomocą widoku można aktualizować model, to znaczy, że >> Observer może >> > ingerować w model. >> >> Tylko ze widok nie powinnien aktualizowac modelu do tego sluzy kontroler. >> >> Do OP >> Np. javie dosyc szeroko sa stosowane VetoableListenery, i mechanizm >> calkiem dobrze sie sprawdza. W koncu Dessign Patterns to nie biblia i >> nie jest koniecznym literalne trzymanie sie przedstawionych konceptow. > > > Ja się właśnie zastanawiam, czy kilku spraw, które dotąd nazywałem > listenerami nie zacząć nazywać observerami (w zasadzie już doszedłem do > wniosku, > że warto). Listenery nie realizują dokładnie tego, co jest zapisane we > wzorcu > observer, bo wiele z nich ma np. kilka metod dla różnych zdarzeń zamiast > jednej metody update (np MouseListener, WindowListener). Ale za to wzorzec > jest bardziej zrozumiały i lepiej porządkuje nazewnictwo. Interfejsy > listenerów > bardzo często mają nazwy pochodne od zdarzeń, które je interesują > (ActionListener, > PropertyChangeListener), natomiast interfejsy Observerów pozostają albo > na poziomie > ogólnym (po prostu Observer), albo są pochodną nazwy obserwowanego obiektu > (nie zdarzeń). Zaś dopiero specyficzne implementacje nazwami wchodzą w > szczegóły > zastosowań i np. eksponują co dokładnie w obserwowanym obiekcie je > interesuje. > Można np. zobaczyć to tu: > http://www.javaworld.com/javaworld/javatips/jw-javatip29.html > > Takie podejście np. w moim wypadku skłoniło mnie do tego, by mnożące > się interfejsy listenerów jakiegoś wyjątkowo interesujacego, wiecznie > aktywnego > obiektu (u mnie to maszyna stanów, która poza stanami ma jeszcze kilka > innych rzeczy, > np. cykl życia z następujacymi po sobie fazami, wywołuje funkcje > biznesowe, w ramach > których są otwierane i zamykane transakcje itp) schować za jednym > zwartym interfejsem > Observera z licznymi metodami odpowiadajacymi zmianom stanów, zmianom > faz życia, > zmianom stanów transakcji bd itp). > > Ma to tę zaletę, że rzadko kto obserwujacy taki złożony obiekt jest > nastawiony > na nasłuch tylko jednego zdarzenia - zazwyczaj interesuje go ich kilka. > Zamiast > wiec implementować wiele listenerów implementujemy jeden interfejs > observera. > Zmiana właściwie jest kosmetyczna - ale dużo bardziej zwarta na > diagramach np. > diagramach klas, gdzie mamy jeden observer z metodami zamiast kilku > listenerów. > Na takim diagramie od razu widać zastosowanie konkretnego wzorca > projektowego > bez konieczności wprowadzania dodatkowego opisu typu "ten interfejs i > ten i ten > są observerami, a tamten już coś innego". > > Ma to wadę wydajnościową, ale kwestię pominę. > Nic dodac nic ujac ! :)
Technical Details
Message-ID:
<drveka$92i$1@inews.gazeta.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailReferences:
<drno5h$mq9$1@news.onet.pl> <dro798$5ma$2@kujawiak.man.lodz.pl> <drpqhk$2o8$2@inews.gazeta.pl> <drtpuh$q44$1@news.onet.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail From: giku1 <giku@poczta.fm> Newsgroups: pl.comp.objects Subject: Re: Czy observer ma prawo zablokować zmianę stanu obserwowanego obiektu ? Date: Fri, 03 Feb 2006 12:26:02 +0100 Organization: "Portal Gazeta.pl -> http://www.gazeta.pl" Lines: 82 Message-ID: <drveka$92i$1@inews.gazeta.pl> References: <drno5h$mq9$1@news.onet.pl> <dro798$5ma$2@kujawiak.man.lodz.pl> <drpqhk$2o8$2@inews.gazeta.pl> <drtpuh$q44$1@news.onet.pl> NNTP-Posting-Host: 195.94.213.2 Mime-Version: 1.0 X-Trace: inews.gazeta.pl 1138965962 9298 195.94.213.2 (3 Feb 2006 11:26:02 GMT) X-Complaints-To: usenet@agora.pl NNTP-Posting-Date: Fri, 3 Feb 2006 11:26:02 +0000 (UTC) In-Reply-To: <drtpuh$q44$1@news.onet.pl> X-Accept-Language: en-us, en X-User: giku1 User-Agent: Mozilla Thunderbird 1.0.2 (Windows/20050317) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit