I was looking through the source to SensorManager in Android and found that when you register a SensorEventListener the SensorManager passes control of the listener to a ListenerDelegate.
I only bring this up as an example. I read the Wikipedia article on delegate programming but I am still not sure of its purpose. Why would one use a ‘delegate’? How does it help the control flow of a program? What are the disadvantages of using (or not) one? Is it most practical for use with listeners?
Edit: ListenerDelegate is on line 487 and the methods in question are around line 1054.
Delegation is not exactly a ‘design pattern’ in the sense used in the GoF book. It is useful in a number of scenarios, and is a base for other patterns
Collections.synchronizedList(..)creates a new collection that delegates to the original one, but has its methods synchronized.EnumerationIteratorclass, that adapts enumerations to theIteratorinterface. The class has ahasNext()method which delegates toenumeration.hasMoreElements()Carcan havestart(),openWindow()andbrake(), but each of these methods will actually delegate to the engine, el.windows and braking system (see also this)