Behavioral patterns
Behavioral patterns are patterns that describe how objects communicate with each other. In other words, it describes how one object sends information to another object, even if that information is just about some event that occurred. They help to lower the code's coupling by providing a more detached communication mechanism that allows one object to send information to another while having as little knowledge about the other object as possible. The less any type knows about the rest of the types in the code base, the less it is dependent on those types. These behavior patterns also help to increase cohesion by providing straightforward and understandable ways to send information.
This can often be the difference between doing something such as calling your sister to ask your mom to ask your grandpa what he wants for his birthday and being able to ask your grandpa directly because you have a good communication channel open with him.
The iterator pattern
The first behavioral...