Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Гибкая архитектура и порождающие паттерны - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Умножение матриц http://www.cyberforum.ru/cpp-beginners/thread964424.html
Я юзаю Qt, но пишу сюда т.к. он никак не влияет на код (почти) У меня есть две матрицы A и B (размерность обеих 800х800). Чтобы получить матрицу AB я делаю: for(int i = 0; i < 800; i++){ ...
C++ Среднее значение Нужно посчитать среднее значение всех элементов стека. Но результат всегда ноль. Помогите пожалуйста! #include <stdio.h> #include <conio.h> #include <iostream.h> #include<stdlib.h>... http://www.cyberforum.ru/cpp-beginners/thread964422.html
C++ Не работает одна программа
Вот программа. Нужно, чтобы она выводила 1. Три числа с длинной строки 6 2. Дви числа с длинной строки 6 и точностью после запятой 3 3. Три символа с длинной строки 5 4. Три строчки с длинной...
Не получается "чистый ноль" C++
Доброго времени суток. Довольно банальная проблема, но заставила меня сильно попотеть! for(double x = -0.5; x <= 0.5; x += 0.01) { cout << x << endl; } При выводе, когда время доходит...
C++ Передача вектора из класса в класс? http://www.cyberforum.ru/cpp-beginners/thread964394.html
Доброго времени суток! У меня возникла проблема в очень простой программе. Я передаю функции из класса board.cpp в класс test.cpp. У меня выдает g++ следующую ошибку: /tmp/cc7v3lIw.o: In function...
C++ Вывод матрицы на экран //* С клавиатуры вводится размерность целочисленной матрицы, затем сама матрица.Найти элементы меньшие среднего арифметического. //* Разрешается при этом использовать только один оператор... подробнее

Показать сообщение отдельно
Melg
538 / 159 / 64
Регистрация: 23.09.2013
Сообщений: 314

Гибкая архитектура и порождающие паттерны - C++

28.09.2013, 19:55. Просмотров 774. Ответов 10
Метки (Все метки)

У меня возник вопрос следующего характера.
Предположим, что есть некоторый интерфейсный класс фильтра, есть реализации, наследованные от него, есть класс - контейнер, который умеет регистрировать в себе фильтры и последовательно их применять и вычислять конечный результат по логическому или. И есть класс - кусок MVC паттерна проектирования, который зарегестрированный контейнер с фильтрами уже умеет использовать для отображения отфильтрованных данных.
Эта система является высоко гибкой, открытой для расширения, масштабируемой, но эта гибкость и абстрактность - вызывает у меня проблемы, когда я хочу ей воспользоваться. А именно, для того что-бы конкретизировать свои намерения в использовании фильтров я должен написать в коде что-то вроде:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[CPP]
#include "filteringinterface.h"
#include "filtercontainerinterface.h"
#include "crazymvcpart.h"
#include "user.h"
 
#include "filetypefilter.h"           // :( so bad
#include "userfilefilter.h"           
#include "orfiltercontainer.h"   
 
 
int main(int argc,char **argv) {
   FilterInterface *file_type_filter = new FileTypeFilter(".txt");
   UserFileFilter *user_file_filter = new UserFileFilter;
   User *user = GetUserFromHell();
   user_file_filter->SetUser(user);
   FilterInterface *setupped_user_file_filter = user_file_filter;
 
   FilterContainerInterface *or_filter_container = new OrFilterContainer;
   or_filter_container->RegisterFilter(file_type_filter);
   or_filter_container->RegisterFilter(setupped_user_file_filter);
   
   CrazyMvcPart *mvc_part = new CrazyMvcPart;
   mvc_part->RegisterFilterContainer(or_filter_container);
   mvc_part->ShowFilteringResults();
}
[/CPP]

В чём суть проблемы - во-первых, допустим у меня 5 мест в коде где я хочу использовать мою наизамечательнейшую систему демонстрации фильтрованных данных, но в одном случае нужно фильтровать одними фильтрами, по правилу .txt в другом - другими - по другому правилу... А этот код приходится вызывать целиком. Во-вторых, я не могу в рантайме взять и подменить этот самый способ - всё инстанцирование уже захардкожено, и его нельзя будет изменить. В-третьих я жескто связываю "пользовательский" код - со всеми реализациями - т.е. заставляю пользователя инклюдить все хедеры, всех инстанцируемых сущностей, будь то фильтры, контейнер фильтров, или часть MVC. Но, при этом, только пользовательский код знает наверняка что нужны именно фильтры по типу, с тонкой настройкой ввиде ".txt" формата.
Отсюда возникает вопрос, каким образом построить систему инстанцирования фильтров, и контейнера фильтрации - так, что-бы с одной стороны - она так-же была гибкой, расширяемой, независимой от реализации, но при этом позволяла на стороне пользователя однозначно задавать и настраивать фильтры. Я бы очень хотел услышать ответы в коде, либо в терминологии применения паттернов проектирования, с некоторыми комментариями к заданой конкретике. Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru