Можно ли создать черту только для того, чтобы указать контракт, но не использовать его с точки зрения полиморфизма? - PullRequest
0 голосов
/ 08 апреля 2020

Итак, допустим, у меня есть черта следующей формы -

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 в первую очередь для обеспечения исполнения контракта, которому должен следовать «построитель запросов»? Чтобы обобщить это, скажем также, что эта черта не имеет методов, общих для всех конструкторов запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...