Implementation of few design patterns for learning purpose