examples for design patterns