In software engineering, behavioral design patterns are design patterns
that identify common communication patterns between objects and realize
these patterns. By doing so, these patterns increase flexibility in
carrying out this communication.