> 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
> 

Reply via email to