Delegates
A delegate is a tool through which one object can communicate with another; in turn, the objects can stay connected to each other. It's is a method by which one object can action behalf of another object. The delegating object keeps a reference to the other object and, at the appropriate time, sends a message to it. The message informs the delegate of an event that the delegating object is about to handle or that is to be handled.