Magento Coreの「Gang of Four」デザインパターン


10

Magentoのコアで使用されている非常に明白なパターンがいくつかあります。

  • シングルトン
  • レジストリ
  • イベント/オブザーバー
  • 工場
  • モデル/ビュー/コントローラー

しかし、アクター、デコレーター、ストラテジーパターンなど、私が知らないMagentoで使用されているものもあります。

Magentoのすべてのパターンタイプの使用法のリファレンスリスト、またはMagentoの組み込み機能を不必要にレプリケートしないサードパーティのモジュールに実装する方法はありますか?


1
短い答え:いいえ。しかし、MVCを忘れてしまった:-)
Fabian Blechschmidt 2013年

2
実際、Stack Overflowにデザインパターンのリストがあります(ブックマークにリンクがあります:))- stackoverflow.com/questions/5041473/magento-design-patterns
Sergei Guk

SOにリンクしているという理由だけで賛成票を投じます。
Ben Lessani-Sonassi

ワオ。それがまさに私が探していたものです。回答として投稿してください!
philwinkle

回答:


12

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);

イテレータ:

Mage::getModel('catalog/product')->getCollection();

イベント/リスナー:

Mage::dispatchEvent('model_load_before', $params);

編集

アクティブレコード

$product->save()
$product->getName()

ヌルオブジェクト

$collection->getFirstItem()

遅延読み込み -反復時にコレクションが読み込まれます

MagentoのMVC、フロントコントローラー、ファクトリー、シングルトン、レジストリに関するRyan Streetブログに5つの記事があります。

編集
Magentoの「シングルトン」は、疑似シングルトンであることを付け加えます。Mage :: getSingleton()はファクトリであるため「ファクトリ」と、getSingleton()メソッド内ではこれが呼び出されるため「レジストリ」の組み合わせです。

self::register($registryKey, self::getModel($modelClass, $arguments))

2
私は「アクティブレコードの」(追加される場合があります$product->save()$product->getName()、...)、「ヌルオブジェクト」( $collection->getFirstItem())、「フロントコントローラ」、 `レイジーローディング」(反復時にコレクションがロードされている)
マリウス

@Mariusは回答を自由に編集してください。
philwinkle
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.