Source: http://stg-tud.github.io/eise/WS11-EiSE-17-Observer_Design_Pattern.pdf