I like to think of the observer pattern as dependency injection on steroids, the difference being that with
the latter (taking off from the example on the linked article) you need to call
store method on the database, and therefore you must know there is one.
As with observers you don’t care if there is a database or not.
The parser example would be something like:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
Here the database is observing the consumer, and when it has any new parsed data, the DB gets notified and acts accordingly. If there is no database, the consumer goes on with it’s business and nothing else happens, but there can be one, two or more databases, loggers, etc, listening and performing actions when the data is parsed.
Observer is a library that comes bundled with ruby, but there are others you can use, such as:
Rails had it’s own observers you could use, they were removed from the core in version 4.0, but you can still use them as a gem.