https://ruclips.ru/en/watch/AsfM6YLtu9g/design-patterns-programming-with-anthony-take-2