The Delegation Principle moves work from a requester class into a more suitable, cohesive delegate class. The requester keeps a delegate object and asks it to perform the work without depending on its implementation. section 2.3.2
Catalogue delegates attribute matching
A Catalogue stores Book objects, while each Book contains an Attributes object. Instead of matching titles, authors, years, and genres itself, Catalogue calls book.attributes.is_match(target_attrs). Attribute changes therefore remain inside Attributes, making Catalogue more cohesive and loosely coupled. section 2.3.2
Delegation also supports the Strategy Design Pattern. Sport delegates player recruitment and venue selection to strategy objects, whose implementations can be selected by subclasses or replaced at run time. section 8.2.3

