The art of Events
The art of using events to build more independent classes. /* Found a better example */ Imagine you have a class A and a class B. A builds B, and B have to communicate with A (call methods ... ?) Some developers (Boooo (I've done it ... (Booo >> me))) will pass a reference of A to B "A(){B my_B = new B(this);}" /* Please note the newB private joke */ But what happens when you want an other class, C, who don't know A to build B ? So we have to remove the A's reference in the B ctor. How B should communicate now ? - Using Events ! B exposes an event, the builder of B can register on it. - B can speak to A throwing this event. - Every class can build a B, and can, if it needs, register on its events, doing whatever he wants when the event is thrown. B is now fully reusable!