When it comes to the Observer pattern, there are a number of related, overlapping terms used by different codebases. Off the top of my head:
- Observer/Observable/Subject
- Listener/Listenable
- Event/Event source/Event sink/Event handler
- Hook/Callback
- Subscriber/Subscribable
- "Firing" vs. "Triggering" vs "Notifying" vs "Executing"
Which of these do consider to be synonymous?
Of terms that are synonymous, which do you prefer to use in your programs?
Of terms that are not synonymous, what semantic differences do the different terms imply to you?
Observer and Listener seem closely coupled with the source, compared to Publish/Subscribe and Notify, which both feel quite decoupled from the source (of events/notifications). So I will ATTACH a Listener directly to an object, but Subscribe to events/notifications from who-knows-where.