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
, ProductFactory
vs?
ve ayrıca örneğin:
Biz geçebilir AbstractFactory
tür denetleme için yerine ProductFactory
de ProductRepository
sınıf yapıcısı.
Böylece ProductRepository
ve 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)Product
nesne gerektirir .Bunun için belirli bir
ProductFactory
nesneye bağlıdır .ProductFactory
nesne, nesneye bağlıdırObjectManager
.ObjectManager
nesne 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?