Magento 2는 주사 불가능한 팩토리 클래스를 사용하고 있습니다.
제품 클래스 ProductFactory
예 : 고객 클래스 예 :CustomerFactory
공장 패턴 유형이 무엇인지 이해하지 못 합니까?
1 개의 팩토리 클래스와 연관된 각 클래스에 대해. 중복되는 것으로 생각합니다.
왜 우리는 추상 공장 작성해서는 안 CustomerFactory
, ProductFactory
등?
또한 예를 들면 다음과 같습니다.
우리는 통과 할 수 AbstractFactory
유형 검사를 위해 대신 ProductFactory
에 ProductRepository
클래스 생성자.
우리가 간의 긴밀한 결합을 방지 할 수 있도록 ProductRepository
하고ProductFactory
추상 팩토리 클래스 :
namespace Magento\Framework\ObjectManager\Code\Generator;
/**
* Abstract Factory class
*/
abstract class AbstractFactory
{
/**
* Object Manager instance
*
* @var \Magento\Framework\ObjectManagerInterface
*/
protected $_objectManager = null;
/**
* Instance name to create
*
* @var string
*/
protected $_instanceName = null;
/**
* Create class instance with specified parameters
*
* @param array $data
* @return \Magento\Catalog\Model\Product
*/
public function create(array $data = array())
{
return $this->_objectManager->create($this->_instanceName, $data);
}
}
추상 팩토리 구현 :
namespace Magento\Catalog\Model;
use Magento\Framework\ObjectManager\Code\Generator\AbstractFactory;
/**
* Factory class for @see \Magento\Catalog\Model\Product
*/
class ProductFactory extends AbstractFactory
{
public function __construct(\Magento\Framework\ObjectManagerInterface $objectManager, $instanceName = '\\Magento\\Catalog\\Model\\Product')
{
$this->_objectManager = $objectManager;
$this->_instanceName = $instanceName;
}
}
객체 관리자와 팩토리의 관계는 무엇입니까?
많은 체인 객체가 있습니다.
예를 들어
ProductRepository
(여기서는 클라이언트라고 부를 수 있음)Product
객체 가 필요 합니다.이를 위해 특정
ProductFactory
객체에 따라 다릅니다 .ProductFactory
객체는 객체에 따라 다릅니다ObjectManager
.ObjectManager
객체는 팩토리 객체 (여기Developer Object
) 에 따라 다릅니다 .
물론 그들은 느슨한 결합을 위해 인터페이스를 사용하고 있습니다. 여전히 혼란스러운 흐름.
누군가가 Magento 2 팩토리 패턴과 Magento 1과의 차이점에 대해 심층적 인 이점을 줄 수 있습니까?