Design patterns examples based on head first design patterns book