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 से अलग है?