서비스 팩토리가 귀하의 케이스에서 작동하지 않아야하는 이유를 이해하는 데 몇 가지 문제점이 있습니다. 서로 다른 서비스 클래스를 반환해야합니까? 이 사용자의 요구에 맞지 않으면, 지금
class NewsletterFactory
{
public function __constructor(...)
{
// Receive arguments needed to create the service below
}
public function get()
{
// Say the variable $userInput exists and is derived from constructor
if ($userInput === 'string')
return new NewsletterManager($dynamicArgument1);
if ($userInput === 'integer')
return new AnotherNewsletterManager($dynamicArgument2);
return new DefaultNewsletterManager();
}
}
: 나는 공장의 예에서 볼 무엇
는이 같은 뭔가를 할 수 있다는 것입니다. 필요한 것을 반환하는 CustomFactory
이라는 서비스를 만들 수도 있습니다. 반환되는 것은 직접 서비스가 아니므로 원하는대로 할 수 있습니다. 하지만 이렇게하면 CustomFactory
에 의해 생성 된 개체를 종속성 컨테이너에서 요청할 수 없습니다.
FormFactory과 유사합니다. 양식 유형을 인스턴스화하는 데 사용되는 팩토리입니다. 그러나 FormFactory
은 의존성 삽입 태그와 컴파일러 패스가 결합되어 있기 때문에 더 강력합니다. 각 유형은 종속성 주입 시스템에 각 유형을 등록하여 독자적으로 검색 할 수 있습니다. 나는 정확히 Form
구성 요소의 모든 내부 구조는 아니지만 다른 방법으로는 문제가 해결 될 수 있다고 생각합니다.
감사합니다.
매트