Итак, допустим, у меня есть черта следующей формы -
trait QueryBuilder {
def build(filters: Seq[CustomFilter]): CustomDBQuery
}
С этим я хочу установить sh абстракцию, которая говорит, что любой построитель запросов должен соответствовать этому контракту .
Теперь, скажем, у меня есть SeriesQueryBuilder
, определенный как этот, который имеет собственную реализацию метода build()
-
object SeriesQueryBuilder extends QueryBuilder {
override def build(filters: Seq[CustomFilter]): CustomDDBQuery = ???
}
Теперь мой вопрос - я не Я не хочу передавать QueryBuilder
в других методах, но вместо этого передавать только конкретный c конкретный экземпляр подтипа. В таком случае, неправильно ли иметь черту QueryBuilder
в первую очередь для обеспечения исполнения контракта, которому должен следовать «построитель запросов»? Чтобы обобщить это, скажем также, что эта черта не имеет методов, общих для всех конструкторов запросов.