Да, почти так я сейчас и делаю, если я вас правильно понял. Код запроса запрос знает из первого шаблонного парметра, а регулярное выражение получает у фабрики, переданной ему в качестве второго шаблонного параметра, таким образом можно потом менять не только регулярные выражения, выдаваемые фабрикой, но и подставлять разные фабрики.
А передачи параметров в конструктор, кроме строки запроса я хочу избежать, возможно потом поменяю мнение на этот счет.
Такой вариант вполне возможен, но я почему-то его отбросил, так как он ограничивает возможности параметризации только базовыми типами. Хотя, в общем то, указатель можно передать на что угодно…
Пока делаю фабрикой как наиболее гибким способом, так как предполагается расширение возможностей.
Если сделать указатель на строку с регэкспом шаблонным параметром, то будет проще, если сделать фабрикой — возможно более гибко. Как вы считаете?
Ок, пока фабрика на первом месте. С ней еще один вопрос: при таком способе использующий должен знать коды запросов, при использовании шаблонов (будем считать макросы отпали) достаточно указать тип запроса для его создания и не зависеть от того, что в последствии его код поменяется. Верны ли мои рассуждения, или я снова что-то не учитываю?
Если бы мне нравилась «чехарда с макросами и разбуханием кодобазы», я бы не спрашивал тут об этом совета ).
«Понятия о хорошем» формирую постоянно, еще ни разу не получалось их не пересматривать.
Спасибо ).
Спасибо, попробую. Решение с шаблонными параметрами мне нравится тем, что переносит выбор о том, какой код использовать с рантайма на время компиляции, но видимо придется этим пожертвовать.
Передавать регулярное выражение в конструктор — значит обязать того, кто использует Request1 и Request2, знать какие регулярные выражения для них требуются. Конечно возможно создать фабрику регулярных выражений, выдающую их по коду запроса, но это вероятно дополнительный синглтон и зависимость. Хотелось бы чтобы можно было передавать запросу только параметры из которых он состоит, а его код и регулярное выражение иметь возможность статически параметризировать. Обдумаю еще идею с фабрикой или чем-нибудь подобным.
Этот способ не избавляет от описания нескольких десятков классов, поэтому не решает задачу, которую решает в данном случае макрос. Так же требуется создание объекта, содержащего реализацию метода и его вызов каждый раз, когда потребуется получить строку с выражением.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
А передачи параметров в конструктор, кроме строки запроса я хочу избежать, возможно потом поменяю мнение на этот счет.