Closed SmetaninPavel closed 5 years ago
Вопрос к примеру из главы https://ota-solid.now.sh/srp/in-ideal-world
В первом блоке кода следующий пример:
// класс, который занимается экспортом данных class ReportExporter { name: string data: ReportData constructor(name: string, data: ReportData) { this.name = name this.data = data } export(reportType: ReportTypes): string { const formatter: Formatter = new FormatSelector(reportType, this.data) return formatter.format() } }
FormatSelector
reportType
this.data
formatter.format()
Но конструктор FormatSelector принимает только одну переменную:
class FormatSelector { formatters = { [ReportTypes.Html]: HtmlFormatter, [ReportTypes.Txt]: TxtFormatter, } constructor(reportType: ReportTypes) { const FormatterFactory = this.formatters[reportType] return new FormatterFactory() } } const dynamicFormatter = new FormatSelector(ReportTypes.Html) dynamicFormatter.format(/*...*/)
А метод formatпринимает data:
format
data
interface Formatter { format(data: ReportData): string; }
Да, верно замечено. Под эту проблему уже есть пул-реквест.
Вопрос к примеру из главы https://ota-solid.now.sh/srp/in-ideal-world
В первом блоке кода следующий пример:
FormatSelector
мы вызываем конструктор с двумя переменнымиreportType
иthis.data
formatter.format()
без аргументовНо конструктор
FormatSelector
принимает только одну переменную:А метод
format
принимаетdata
: