short and nice examples of all 23 design patterns from GoF