Magento 2 używa klas fabrycznych dla produktów nie do wstrzykiwania.
Na przykład klasa produktu: ProductFactory
Na przykład klasa klienta:CustomerFactory
Nie rozumiem, jaki jest tutaj typ wzoru fabrycznego ?
Ponieważ dla każdej klasy powiązanej z 1 klasą fabryczną. Myślę, że to coś duplikatu.
Dlaczego nie powinniśmy tworzyć abstrakcyjne fabrykę CustomerFactory, ProductFactoryetc?
a także na przykład:
Możemy przejść AbstractFactorydo sprawdzenia typu zamiast ProductFactoryw ProductRepositorykonstruktorze klasy.
Możemy więc uniknąć ścisłego połączenia między ProductRepositoryiProductFactory
Klasa abstrakcyjna fabryki:
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);
}
}
Implementacja fabryki abstrakcyjnej:
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;
}
}
Jaki jest związek między menedżerem obiektów a fabryką?
Jest tyle łańcuchów przedmiotów:
Na przykład
ProductRepository(tutaj możemy to nazwać klientem) wymagaProductobiektu.Zależy to od konkretnego
ProductFactoryobiektu.ProductFactoryobiekt zależy odObjectManagerobiektu.ObjectManagerobiekt zależy od obiektu fabrycznego (tutajDeveloper Object).
Oczywiście używają interfejsów do luźnego łączenia. Wciąż bardzo mylący przepływ.
Czy ktoś może dać dogłębne korzyści z fabrycznym wzorem Magento 2, a także czym różni się od Magento 1?