Exemplo n.º 1
0
        //pattern  factory method. not much to say.
        public static IDataTransformer CreateTransformer(ReportConfig config)
        {
            IDataTransformer service = new DataTransformer(config);

            //pattern decorator. new data transformer wraps previous one around
            if (config.WithData)
            {
                service = new WithDataReportTransformer(service);
            }

            if (config.VolumeSum)
            {
                service = new VolumeSumReportTransformer(service);
            }

            if (config.WeightSum)
            {
                service = new WeightSumReportTransfomer(service);
            }

            if (config.CostSum)
            {
                service = new CostSumReportTransformer(service);
            }

            if (config.CountSum)
            {
                service = new CountSumReportTransformer(service);
            }

            return(service);
        }
Exemplo n.º 2
0
        //статический фабричный метод
        public static IDataTransformer CreateTransformer(ReportConfig config)
        {
            IDataTransformer service = new DataTransformer(config);

            if (config.WithData)
            {
                service = new WithDataReportTransformer(service);
            }

            if (config.VolumeSum)
            {
                service = new VolumeSumReportTransformer(service);
            }

            if (config.WeightSum)
            {
                service = new WeightSumReportTransfomer(service);
            }

            if (config.CostSum)
            {
                service = new CostSumReportTransformer(service);
            }

            if (config.CountSum)
            {
                service = new CountSumReportTransformer(service);
            }

            return(service);
        }
Exemplo n.º 3
0
        public static IDataTransformer CreateTransformer(ReportConfig config)
        {
            // TODO Найден паттерн: ChainOfResponsibility
            // Теперь мы можем навесить кучу обработчиков, при этом создавая эту цепочку динамически
            // Простое добавление новых агрегирующих функций

            IDataTransformer service = new DataTransformer(config);

            if (config.WithData)
            {
                service = new WithDataReportTransformer(service);
            }

            if (config.VolumeSum)
            {
                service = new VolumeSumReportTransformer(service);
            }

            if (config.WeightSum)
            {
                service = new WeightSumReportTransformer(service);
            }

            if (config.CostSum)
            {
                service = new CostSumReportTransformer(service);
            }

            if (config.CountSum)
            {
                service = new CountSumReportTransformer(service);
            }

            return(service);
        }
Exemplo n.º 4
0
        public static IDataTransformer CreateTransformer(ReportConfig config)
        {
            IDataTransformer service = new DataTransformer(config);

            //далее идут декораторы
            //и тут лучше использовать chain of responsibility или лучше fluent bilder
            if (config.WithData)
            {
                service = new WithDataReportTransformer(service);
            }

            if (config.VolumeSum)
            {
                service = new VolumeSumReportTransformer(service);
            }

            if (config.WeightSum)
            {
                service = new WeightSumReportTransfomer(service);
            }

            if (config.CostSum)
            {
                service = new CostSumReportTransformer(service);
            }

            if (config.CountSum)
            {
                service = new CountSumReportTransformer(service);
            }

            return(service);
        }
Exemplo n.º 5
0
    {                                                                           //видим Посредника, который отделил объекты друг от друга, и содержит всю логику системы
        public static IDataTransformer CreateTransformer(ReportConfig config)
        {
            IDataTransformer service = new DataTransformer(config);

            if (config.WithData)                                            //вместо цеопчик If, лучше использовать цепочку обязанностей - Chain of Responsibility
            {
                service = new WithDataReportTransformer(service);           //причем тут можно использовать также и БИлдер,
            }                                                               // например StateBuilder, чтобы конструировать объект
                                                                            // по частям в этом месте
            if (config.VolumeSum)
            {
                service = new VolumeSumReportTransformer(service);          //также тут мы наблюдаем некий фасад, который предсавляет простой интерфейс к сложной подсистеме
            }

            if (config.WeightSum)
            {
                service = new WeightSumReportTransfomer(service);
            }

            if (config.CostSum)
            {
                service = new CostSumReportTransformer(service);
            }

            if (config.CountSum)
            {
                service = new CountSumReportTransformer(service);
            }

            return(service);
        }
        public static IDataTransformer CreateTransformer(ReportConfig config)
        {
            // Цепь обязанностей, можно избавиться от кучи if-ов, дав доступ к конфигурации (проверка будет внутри каждого трансформера)
            // Исправил
            IDataTransformer service = new DataTransformer(config);

            service = new WithDataReportTransformer(service);
            service = new VolumeSumReportTransformer(service);
            service = new WeightSumReportTransfomer(service);
            service = new CostSumReportTransformer(service);
            service = new CountSumReportTransformer(service);
            return(service);
        }
Exemplo n.º 7
0
        public static IDataTransformer CreateTransformer(ReportConfig config)
        {
            IDataTransformer service = new DataTransformer(config);

            /*
             * Тут использованы декораторы (Decorator), а точнее создаются тут.
             * Идея хорошая, т.к. объекту динамически
             * добавляются новые обязанности. Конкретно тут применяется т.к. происходит модификация
             * аргументов (отчёта) в зависимости от заданных параметров (config).
             *
             * Кроме того сам процесс создания похож на... фабричный метод? Вроде как он.
             * Плюсы использования в том, что параметры создания задаются с помощью config.
             * Также сам процесс создания отделён от класса и задаётся "динамически".
             */
            if (config.WithData)
            {
                service = new WithDataReportTransformer(service);
            }

            if (config.VolumeSum)
            {
                service = new VolumeSumReportTransformer(service);
            }

            if (config.WeightSum)
            {
                service = new WeightSumReportTransfomer(service);
            }

            if (config.CostSum)
            {
                service = new CostSumReportTransformer(service);
            }

            if (config.CountSum)
            {
                service = new CountSumReportTransformer(service);
            }

            return(service);
        }