ম্যাজেন্টো 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অবজেক্টের প্রয়োজন requiresএটির জন্য এটি নির্দিষ্ট
ProductFactoryবস্তুর উপর নির্ভর করে ।ProductFactoryঅবজেক্ট অবজেক্টের উপর নির্ভর করেObjectManager।ObjectManagerঅবজেক্ট কারখানার অবজেক্টের উপর নির্ভর করে (এখানেDeveloper Object)।
অবশ্যই তারা আলগা দম্পতির জন্য ইন্টারফেস ব্যবহার করছে। এখনও সত্যিই বিভ্রান্ত প্রবাহ।
আপনি কি কেউ ম্যাজেন্টো 2 কারখানার প্যাটার্নের সাথে গভীরভাবে সুবিধাগুলি দিতে পারেন এবং এটি কীভাবে ম্যাজেন্টো 1 থেকে আলাদা?