ম্যাজেন্টো 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 থেকে আলাদা?