🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #9922

Re: CS, Eventy i Multicast

#9922
From: Wiktor Zychla
Date: Thu, 10 Nov 2005 13:39
31 lines
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-mail
References: <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