GoF Design patterns with nice and clear examples