Article View: alt.pl.comp.lang.csharp
Article #9922Re: CS, Eventy i Multicast
From: Wiktor Zychla
Date: Thu, 10 Nov 2005 13:39
Date: Thu, 10 Nov 2005 13:39
31 lines
2852 bytes
2852 bytes
> Na przykład tak: > Monitor udostepnia metodę "ZarejestrujMnie", metoda przyjmuje jako > argument Delegate oraz jakiś identyfikator rodzajów zdarzeń, jakimi > subskrybent jest zainteresowany. Subskrybenci wołąją ZapiszMnie, > przekazując swój Delegate (swoją metodę obsługi zdarzenia). Dzięki temu > Monitor jest w stanie powiązać subsrybentów z oczekiwanymi typami zdarzeń. > Gdy nadchodzi zdarzenie jakiegoś typu Monitor "przegląda" listę > subskrybentów i wynajduje tych którzy są zainteresowani danym typem > zdarzenia, a następnie wywołuje metodę przekazaną przez Delegate. > Nie do końca eleganckie, bo nie izoluje zupełnie Monitora od Subskrybenta, > ale powinno spełnić Twoje oczekiwania. też pomyślałem o czymś podobnym, tylko zastanawia mnie jaką przewagę ma to podejście od wysłania zdarzenia do wszystkich obiektów i niech one same decydują o tym czy są zainteresowane czy nie w zależności od parametrów zdarzenia. w sensie projektowym różnica jest na niekorzyść tego pomysłu o którym mówisz w stosunku do tego wysyłania zdarzenia do wszystkich słuchaczy, właśnie z powodu braku izolacji. możnaby to co prawda obejść projektując interfejs dla subskrybenta, przeglądania listy delegacji przypiętych do zdarznia przez GetInvocationList(), sprawdzaniu czy typ z którego pochodzi delegacja implementuje ten interfejs, a następnie odpytywanie się tego obiektu o to czy jest zainteresowany zdarzeniem, tyle że to niczego nie zmienia - i tak dla każdego subskrybenta trzeba wykonać kawałek funkcji, która sprawdzi czy jest on zainteresowany zdarzeniem czy nie. nie sądzę więc żeby była jakakolwiek różnica na korzyść w wydajności, możnaby to co najwyżej zbadać. Wiktor Zychla
Technical Details
Message-ID:
<dkvik6$4un$1@nemesis.news.tpi.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mailReferences:
<dkv4kp$jhi$1@news.onet.pl> <43733fc2$1@news.home.net.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.gazeta.pl!news.nask.pl!news.nask.org.pl!newsfeed.tpinternet.pl!nemesis.news.tpi.pl!atlantis.news.tpi.pl!news.tpi.pl!not-for-mail From: "Wiktor Zychla" <user@nospam.com.eu> Newsgroups: alt.pl.comp.lang.csharp Subject: Re: CS, Eventy i Multicast Date: Thu, 10 Nov 2005 14:39:39 +0100 Organization: tp.internet - http://www.tpi.pl/ Lines: 33 Message-ID: <dkvik6$4un$1@nemesis.news.tpi.pl> References: <dkv4kp$jhi$1@news.onet.pl> <43733fc2$1@news.home.net.pl> NNTP-Posting-Host: bwx213.internetdsl.tpnet.pl X-Trace: nemesis.news.tpi.pl 1131630022 5079 83.18.231.213 (10 Nov 2005 13:40:22 GMT) X-Complaints-To: usenet@tpi.pl NNTP-Posting-Date: Thu, 10 Nov 2005 13:40:22 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.2180 X-RFC2646: Format=Flowed; Response X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2180 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit