Magento 2, enjekte edilemeyen maddeler için fabrika sınıflarını kullanıyor.
Örneğin ürün sınıfı: ProductFactory
Örneğin müşteri sınıfı:CustomerFactory
Burada fabrika modelinin türü nedir anlamıyorum ?
Çünkü 1 fabrika sınıfı ile ilişkili her sınıf için. Yinelenen bir şey olduğunu düşünüyorum.
Neden için soyut fabrika oluşturmamalıdır CustomerFactory, ProductFactoryvs?
ve ayrıca örneğin:
Biz geçebilir AbstractFactorytür denetleme için yerine ProductFactoryde ProductRepositorysınıf yapıcısı.
Böylece ProductRepositoryve arasındaki sıkı bağlantıyı önleyebiliriz.ProductFactory
Soyut fabrika sınıfı:
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);
}
}
Soyut Fabrika uygulaması:
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;
}
}
Nesne yöneticisi ve fabrika arasındaki ilişki nedir?
Çok fazla zincirleme nesne var:
Örneğin
ProductRepository(burada istemci olarak adlandırabiliriz)Productnesne gerektirir .Bunun için belirli bir
ProductFactorynesneye bağlıdır .ProductFactorynesne, nesneye bağlıdırObjectManager.ObjectManagernesne Fabrika Nesnesine bağlıdır (buradaDeveloper Object).
Elbette gevşek bağlantı için Arayüzler kullanıyorlar. Hala gerçekten kafa karıştırıcı akış.
Birisi Magento 2 fabrika deseniyle ve ayrıca Magento 1'den nasıl farklı olduğu konusunda derin avantajlar sağlayabilir misiniz?