2014-12-07 3 views
3

모델을 찾고 모델을 만드는 작업은 공장에서 수행해야합니까?PHP 및 Laravel의 팩토리 패턴 사용

예를 들어

:

전 제품 모델을 가지고 있다면, 공장과 같은 방법이 있어야합니다

$product = $productFactory->findByID(32); 

$product = $productFactory->all(); 

$product = $productFactory->findByName($productName); 

$product = $productFactory->create($data); 

답변

9

글쎄, 실제로 Factory Pattern이 문제를 해결하기 위해 팩토리 메소드를 사용하는 creational pattern입니다 (예 : run-time에서 객체를 동적으로 생성한다는 것을 의미합니다. 이 패턴은 클라이언트 클래스가 런타임에 빌드 된 동적 클래스를 사용할 수있게하는 객체 생성 메커니즘을 처리하는 데 사용됩니다. 이 패턴은 팩토리 메소드 (abstract)를 사용하며이 메소드는 빌드 된 객체를 사용하는 클라이언트 클래스의 요청에 따라 다른 클래스/객체를 사용하여 객체를 빌드합니다. 어쨌든 넓은 의미입니다.

따라야 할 패턴과 같은 디자인 패턴을 생각하는 대신 클래스의 유스 케이스를 찾아 적절히 사용하십시오. 대부분 Eloquent ORM을 확장하는 클래스로 Model을 의미 했으므로이 경우에는 Eloquent ORM을 확장하면 해당 모델 클래스에 이미 해당 메소드가 있으므로 비즈니스 로직 및 DB 레이어를 구분할 필요가 없도록 할 수 있습니다. 클래스를 종속 클래스로 사용하여 데이터베이스 계층 클래스에서 메서드를 호출 할 수있는 일반 클래스를 사용하십시오. 어쨌든 혼란스럽게 들릴지도 모릅니다.

디렉토리 구조를 어떻게 구성 할 것인가에 대해서는 단지 SoC 정도만 생각하면 깨끗한 응용 프로그램 아키텍처 패턴에 대해 충분히 이해할 수 있습니다. 디자인 패턴이 너무 깊다고 생각하지 말고 깨끗한 응용 프로그램 모델을 생각해보십시오. 아마 this article may help you 약간 (특히 LaravelRepository Pattern를 사용하여 논의 됨).

Factory Pattern의 경우 this 간단하지만 도움이되는 기사를 확인할 수 있습니다.