2016-08-30 9:44 GMT+02:00 Denis Kudriashov <dionisiydk@gmail.com>:
2016-08-30 8:52 GMT+02:00 Norbert Hartl <norbert@hartl.name>:
I think for the 0 case we should think about instantiating the SubscriptionRegistry lazily. This would also mitigate the effect that if a lot of announcers are created they create only a single object instead of two until used. Of course this depends on the probability of having a lot of announcers where only a few are used. The #announce: method looks like it has been lazy before.
Announcer>>#announce: anAnnouncement
| announcement | announcement := anAnnouncement asAnnouncement. registry ifNotNil: [ registry deliver: announcement ]. ^ announcement
checks for #ifNotNil: but registry is created in #initialize. So #ifNotEmpty: would be right here but #deliver: checks that, too.
We always hide announcer instance inside owner. So it could instantiate announcer lazily if such optimization really needed.
Interesting is slots allow to implement such pattern? I imagine AnnouncerSlot which will generate "read code" specifically depending on following message send.