Magento 2 menggunakan kelas pabrik untuk non-injeksi.
Misalnya kelas produk: ProductFactory
Misalnya kelas pelanggan:CustomerFactory
Saya tidak mengerti apa jenis pola pabrik di sini?
Karena untuk setiap kelas terkait dengan 1 kelas pabrik. Saya pikir ini duplikat.
Kenapa kita tidak membuat pabrik abstrak untuk CustomerFactory, ProductFactorydll?
dan juga misalnya:
Kami bisa lulus AbstractFactoryuntuk memeriksa jenis bukan ProductFactorydi ProductRepositorykelas konstruktor.
Jadi kita bisa menghindari kopling ketat antara ProductRepositorydanProductFactory
Kelas pabrik abstrak:
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);
}
}
Abstrak Implementasi pabrik:
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;
}
}
Apa hubungan antara manajer objek dan pabrik?
Ada banyak objek chaining:
Misalnya
ProductRepository(di sini kita bisa menyebutnya sebagai klien) membutuhkanProductobjek.Untuk ini tergantung pada
ProductFactoryobjek tertentu .ProductFactoryobjek tergantung padaObjectManagerobjek.ObjectManagerobjek tergantung pada Obyek Pabrik (di siniDeveloper Object).
Tentu saja mereka menggunakan antarmuka untuk kopling longgar. Alurnya masih sangat membingungkan.
Dapatkah Anda memberi seseorang keuntungan mendalam dengan pola pabrik Magento 2 & juga bagaimana perbedaannya dari Magento 1?