public Report CreateReport(ReportConfig config, string fileName) { var dataTransformer = DataTransformerCreator.CreateTransformer(config); var text = File.ReadAllText(fileName); var data = GetDataRows(text); return(dataTransformer.TransformData(data)); }
public Report CreateReport() { var config = ParseConfig(); var dataTransformer = DataTransformerCreator.CreateTransformer(config); var fileName = _args[0]; var text = File.ReadAllText(fileName); var data = GetDataRows(text); return(dataTransformer.TransformData(data)); }
public Report CreateReport()//это паттерн шаблонный метод, наследники переопределяют поведение GetDataRows { var config = ParseConfig(); var dataTransformer = DataTransformerCreator.CreateTransformer(config); var fileName = _args[0]; var text = File.ReadAllText(fileName); var data = GetDataRows(text); return(dataTransformer.TransformData(data)); }
public Report CreateReport() //Фабричный метод, Шаблонный метод, { var config = ParseConfig(); var dataTransformer = DataTransformerCreator.CreateTransformer(config); var fileName = _args[0]; var text = File.ReadAllText(fileName); var data = GetDataRows(text); //Вот кусок шаблона, реализуется в наследниках return(dataTransformer.TransformData(data)); }
public Report CreateReport() // шаблонный метод(использует внутри абстрактный метод GetDataRows(), реализуеммый наследниками) { var config = argParser.ParseReportConfig(_args); var dataTransformer = DataTransformerCreator.CreateTransformer(config); var fileName = argParser.ParseName(_args); var text = File.ReadAllText(fileName); var data = GetDataRows(text); return(dataTransformer.TransformData(data)); }
public Report CreateReport() //это шаблонный метод, поскольку содержит в себе аюстрактный GetDataRows(), чья реализация зависит от потомков данного класса { var config = ParseConfig(); //в принципе можно увидеть некий фасад, упрощающий подсистему var dataTransformer = DataTransformerCreator.CreateTransformer(config); var fileName = _args[0]; var text = File.ReadAllText(fileName); var data = GetDataRows(text); return(dataTransformer.TransformData(data)); }
/* Шаблонный метод GetDataRows. ReportServiceBase - абстрактный класс; CsvReportService, XlsxReportService, TxtReportService - подклассы, переопределяющие значение GetDataRows*/ public Report CreateReport() { var config = ParseConfig(); /*DataTransformerCreator - фабричный метод для создания цепочки обязанностей, тк мы изначально не знаем какие методы нам понадобятся*/ var dataTransformer = DataTransformerCreator.CreateTransformer(config); var fileName = _args[0]; var text = File.ReadAllText(fileName); var data = GetDataRows(text); return(dataTransformer.TransformData(data)); }
// TODO вынесли парсинг конфига в другое место. Теперь конфиг передается в качестве аргумента public Report CreateReport(ReportConfig config) { // TODO найден паттерн: TemplateMethod // Мы делегируем парсинг DataRow соответствующим классам, которые непосредственно реализуют работу с конкретными форматами // Тем самым, внедрение поддержки новых форматов упрощается var dataTransformer = DataTransformerCreator.CreateTransformer(config); var text = File.ReadAllText(config.FileName); var data = GetDataRows(text); return(dataTransformer.TransformData(data)); }
public Report CreateReport() { var config = ParseConfig(); var dataTransformer = DataTransformerCreator.CreateTransformer(config); var fileName = _args[0]; var text = File.ReadAllText(fileName); //pattern template method. //primitive operation GetDataRows is implemented in child classes //and then used in this method var data = GetDataRows(text); return(dataTransformer.TransformData(data)); }
public Report CreateReport(string[] args) { if (!configParser.TryParseConfig(args, out var config)) { return(null); } var dataParser = DataParserProvider.Provide(config.SourceFile); var data = dataParser.GetDataRows(config.SourceFile); var dataTransformer = DataTransformerCreator.CreateTransformer(config); return(dataTransformer.TransformData(data)); }
public Report CreateReport() { /* * Тут вот у нас стратегия. Хорошее решение, т.к. есть "шаблон" создания * репорта, где одна из функций (GetDataRows) зависит от конкретного * типа файла, но участие в построение играет одно и то же. */ var config = ParseConfig(); var dataTransformer = DataTransformerCreator.CreateTransformer(config); var fileName = _args[0]; var text = File.ReadAllText(fileName); var data = GetDataRows(text); return(dataTransformer.TransformData(data)); }