0
На рассмотрении

Вопрос по поводу паттерна Builder

Anton Antonenko il y a 5 ans mis à jour il y a 5 ans 2

Начал знакомиться с паттеранами. Решил реализовать строитель запросов в БД используя паттерн Builder + chaining.
Возникла проблема. Builder собирает может собирать все данные(тип комманды, колонки, вильтры, сотрировки), но в методе create должна происходить разная конфигурция продукта(запроса), в зависимости от комманды(select, insert...). Вижу один вариант - реализовать метод setCommand как фабрику. Где по-сути и будет выбираться вариант финального результата. Вопрос: Правильно ли вообще использовать в таком случае данный паттерн? Если да, какое более лаконичное решение можно применить для выбора конфигурации продукта?


P.S. Прикрепил наброски текущие. Сейчас отсутствует финальная конфигурация запроса.

DBQueryBuilder.ts
index.ts
SqlQueryBuilder.ts

На рассмотрении

В Laravel работа с базой так и сделана, вот тут можно глянуть: https://laravel.com/docs/7.x/queries#selects

Если хотите, можете копнуть в исходники, там всё более-менее понятно. Из того, что я вижу в вашем коде, главное отличие в том, что в ларавеле тип запроса определяется сразу же, а оттуда вы уже достраиваете запрос методами как хотите.

Спасибо большое за ответ. Загляну в исходники.