Magento Coreの「Gang of Four」デザインパターン
-
16-10-2019 - |
質問
次のような、Magentoのコアで使用されている非常に明白なパターンがいくつかあります。
- シングルトン
- レジストリ
- イベント/オブザーバー
- 工場
- モデル/ビュー/コントローラー
しかし、Magentoで使用されているかもしれない他の人がいますが、俳優、装飾者、戦略パターンなど、私は気づいていません。
Magentoのすべてのパターンタイプの使用法の参照リストは、Magentoの組み込み機能を不必要に複製しないサードパーティモジュールに実装する方法はありますか?
解決
Stack OverflowでMagentoで使用されるデザインパターンのリストがあります
記事から:
明らかなものは次のとおりです。
工場:
$product = Mage::getModel('catalog/product');
シングルトン:
$category = Mage::getSingleton('catalog/session');
レジストリ:
$currentCategory = Mage::registry('current_category');
ヘルパーを表示:
Mage::helper('core');
プロトタイプ:
Mage:getModel('catalog/product')->getTypeInstance();
オブジェクトプール:
$id = Mage::objects()->save($object); $object = Mage::objects($id);
Iterator:
Mage::getModel('catalog/product')->getCollection();
イベント/リスナー:
Mage::dispatchEvent('model_load_before', $params);
編集
アクティブレコード
$product->save() $product->getName()
nullオブジェクト
$collection->getFirstItem()
怠zyなロード - コレクションは反復時にロードされます
もあります ライアンストリートブログに関する5つの記事 MVC、フロントコントローラー、工場、シングルトン、およびマゼントのレジストリについて
編集
Magento 'Singleton」はより擬似シングルトンであると付け加えるかもしれません。 Mage :: Getsingleton()は工場であり「レジストリ」であるため、「工場」の組み合わせです getSingleton()
これは呼び出されます
self::register($registryKey, self::getModel($modelClass, $arguments))
所属していません magento.stackexchange