I just stumbled across this excellent series of articles right here on gamedev...
https://www.gamedev.net/page/resources/_/technical/game-programming/managing-decoupling-r3034
https://www.gamedev.net/page/resources/_/technical/game-programming/managing-decoupling-part-2-polling-callbacks-and-events-r3044
https://www.gamedev.net/page/resources/_/technical/game-programming/managing-decoupling-part-3-c-duck-typing-r3060
https://www.gamedev.net/page/resources/_/technical/game-programming/managing-decoupling-part-4-the-id-lookup-table-r3062
I've only read the first article so far. good stuff!
Their blog is full of gems like those articles: http://bitsquid.blogspot.fi/