HomeWork2 Принцип открытости и закрытости и принцип инверсии зависимостей. У нас имеется интерфейс ILogger и мы можем создавать классы на основе этого интерфейса с разной реализацией и внедрение через ioc. Сюда относится и принцип единственной ответственности, т.к. эти классы будут изменяться только по одной причине. Например изменение пути файла или расширения файла. Либо изменение цвета в консоли и текста и т.д.
Принцип разделения интерфейсов. Например для класса FileLogger реализовано 2 интерфейса, в том числе IDisposable Для ConsoleLogger он не нужен
Принцип Лисков. MyGenerator наследуется от Generator. Класс MyGenerator Может реализовать другие методы и может использовать метод родителя.