2015-09-09 14:32 GMT+02:00 Yuriy Tymchuk <[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 ...)

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?








>
> Uko
>

Reply via email to