EPAM design patterns homework