0
팩토리와 추상 팩토리의 기본 차이점은 무엇입니까?ZendFramework 2의 팩토리 및 추상 팩토리
팩토리와 추상 팩토리의 기본 차이점은 무엇입니까?ZendFramework 2의 팩토리 및 추상 팩토리
팩토리는 컨텍스트마다 하나의 서비스를 만드는 데 사용됩니다. Abstract Factory는 컨텍스트 당 많은 유사한 서비스를 생성하는 데 사용됩니다. 예를 들어, 응용 프로그램에 데이터베이스에 연결되고 "사용자"테이블에서 데이터를 가져올 수있는 단일 저장소 "UsersRepository"가 필요하다고 상상해보십시오. 당신은 다음과 같은이 서비스에 대한 공장을 만들 것입니다 :
class UsersRepositoryFactory implements FactoryInterface
{
public createService(ServiceLocatorInterface $serviceLocator)
{
return new \MyApp\Repository\UsersRepository();
}
}
그러나, 현실 세계에서, 당신은 응용 프로그램에서 많은 테이블과 상호 작용 할 수 있으므로 각에 대한 저장소 서비스를 생성하는 추상 공장을 활용하는 것이 좋습니다 표.
class RepositoryAbstractFactory implements AbstractFactoryInterface
{
canCreateServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName)
{
return class_exists('\MyApp\Repository\'.$requestedName);
}
createServiceWithName(ServiceLocatorInterface $serviceLocator, $name, $requestedName)
{
$class = '\MyApp\Repository\'.$requestedName;
return new $class();
}
}
여기서 알 수 있듯이, 애플리케이션의 각 저장소 서비스에 대해 별도의 팩토리를 만들 필요가 없습니다.