Closed qramilq closed 4 years ago
Ну, правильнее, конечно, селектор формата заставить возвращать экземпляр не из конструктора, а по вызову какого-нибудь метода. И сейчас мне кажется, что здесь вполне можно обойтись статикой:
class FormatSelector {
private static formatters = {
[ReportTypes.Html]: HtmlFormatter,
[ReportTypes.Txt]: TxtFormatter
};
static selectFor(reportType: ReportTypes): Formatter {
const FormatterFactory = this.formatters[reportType];
return new FormatterFactory();
}
}
А использовать его так:
class ReportExporter {
// ...
export(reportType: ReportTypes): string {
const formatter: Formatter = FormatSelector.selectFor(reportType);
return formatter.format(this.data);
}
}
Спасибо за внимательность. Я поправлю этот пример, когда доберусь до компьютера.
Спасибо за книгу всем причастным. Попробовал запустить код из главы про принцип единой ответственности, но он выдает ошибку. Сделал sandbox. Как лучше это можно пофиксить?