친구들. 현재 복잡한 검색을하고 있습니다. 나는 다음 학급을 가지고있다 :검색 클래스입니다. 패턴 조언 요청
App\Search\Search
App\Search\OrderBy\Relevance
App\Search\OrderBy\Priority
App\Search\OrderBy\WordMatch
App \ Search \ Search는 주요 검색 클래스이다. \ OrderBy의 모든 클래스는 쿼리 빌더 객체를 참조로 가져 와서 일부 로직을 적용합니다. 여기
는 일부 코드 샘플은 다음과 같습니다
//App\Search\Search
Class Search {
protected $query;
public function __construct($phrase)
{
$this->phrase = $phrase;
$this->query = App\Airport::newQuery();
}
public function orderByRelevance()
{
OrderBy\Relevance::apply($this->query);
return $this;
}
public function orderByPriority()
{
OrderBy\Priority::apply($this->query);
return $this;
}
public function orderByWordMatch()
{
OrderBy\WordMatch::apply($this->query);
return $this;
}
}
주요 아이디어는 조건과 같이 쿼리에 여러 순서를 적용하는 것입니다 :
$search = new Search('Berlin');
$search->orderByRelevance()->orderByPriority()->get();
그래서 코드가 잘 작동,하지만 난 어떤 느낌 특히 주문 방법을 수동으로 선언 할 때 냄새가납니다. 검색 패턴을 개선 할 수있는 패턴이나 트릭이 있습니까? 이것은 당신이 추가 방법에 추가하여 쿼리 개체를 -build- 것이라고에서 Builder Pattern입니다