> On 12 Sep 2015, at 17:34, Nicolai Hess <[email protected]> wrote: > > > > 2015-09-09 14:32 GMT+02:00 Yuriy Tymchuk <[email protected] > <mailto:[email protected]>>: > Hi, > > as NautilusMethodSelected contains also an information about protocol, class, > package; > NautilusProtocolSelected contains an information about class and package; > . > . > . > > I’ve inherited NautilusClassSelected from NautilusPackageSelected and > NautilusProtocolSelected from NautilusClassSelected… to remove duplication. > But as announcement subscription also includes it’s subclasses, if you > subscribe to NautilusPackageSelected, you end up receiving also > NautilusClassSelected, NautilusProtocolSelected and NautilusMethodSelected. > > What is a good way to resolve this (I can simply separate all the classes, > but maybe there is something important from conceptual point of view)? > > I didn't know announcments are working that way, but it may make sense if you > want to group announcments (register once for "WindowAnnouncement" and > receiving all kind of > subannouncements (WindowClosed/WindowOpened …)
I don’t know about performance, but as far as I understand you can also subscribe to “WindowAnnouncement withAllSubclasses”. > > What we could do (maybe this is a bit overkill): > > - make an announcements hierarchy (NautilusPackageAnnouncement -> > NautiulusClassAnnouncement ...) but never subscribe to this Announcemnts > - create sub classes for every "kind" > NautilusPackageAnnouncement subclass: NautilusPackageChangedAnnouncement > NautilusPackageAnnouncement subclass: NautilusPackageSelectedAnnouncement > > NautilusClassAnnouncement subclass: NautilusClassSelectedAnnouncement > NautilusClassAnnouncement subclass: NautilusClassChangedAnnouncement > > And only subscribe to this subclasses. > That way we are using the hierarchy of Announcement classes for removing of > duplicated code, but only > register and announce the "leaf"-nodes (NautilusClassChangedAnnouncement / > NautilusPackageChangedAnnouncement...) > > what do you think? This may do. Also another option would be to have a NautilusSelectionAnnouncement with all 4 attributes, and then just subclass it for a different type. Uko > > > > > > > > > Uko >
