ファクトリーは創造パターンであり、その機能はオブジェクトを作成することです;
ストラテジーは行動パターンであり、その機能はオブジェクトに多くの動作の中から 1 つの動作を選択させることです;
さまざまな懸念事項
懸念オブジェクトは懸念事項の動作のカプセル化を作成します
(推奨学習: PHPビデオ チュートリアル)
さまざまな問題の解決
ファクトリ パターンは、指示を受け入れ、条件を満たすインスタンスを作成する創造的なデザイン パターンです。これは主に、オブジェクトの作成とは完全に独立して、リソースの統一された配布を解決するため、オブジェクトの作成は顧客の特定の用途とは何の関係もありません。主にデータベースの複数選択やクラスライブラリファイルの読み込みなどに使用されます。
ストラテジー モードは、ストラテジーの切り替えと拡張を解決するものです。より簡潔に言うと、ストラテジー ファミリーを定義し、相互に置き換えることができるように個別にカプセル化します。戦略の変更は独立して行われます。戦略を使用しているお客様向け。
ファクトリーはブラック ボックスに相当し、戦略はホワイト ボックスに相当します。
例:
<?php header('content-type:text/html;charset=utf-8'); abstract class Product { abstract public function getName(); } class ProductA extends Product { public function getName() { echo '这是A商品<br>'; } } class ProductB extends Product { public function getName() { echo '这是B商品<br>'; } } //工厂模式 class ProductFactory { public static function create($num) { switch($num) { case 1: return new ProductA(); case 2: return new ProductB(); } return null; } } //传递不同的参数获取不同的对象 $obj=ProductFactory::create(1); $obj->getName(); //这是A商品 $obj=ProductFactory::create(2); $obj->getName(); //这是B商品 //=======策略模式 <?php header('content-type:text/html;charset=utf-8'); interface IStrategy { function ontheway(); } class Walk implements IStrategy { public function ontheway() { echo '走着去<br>'; } } class Bick implements IStrategy { public function ontheway() { echo '骑自行车去<br>'; } } class Bus implements IStrategy { public function ontheway() { echo '坐巴士去<br>'; } } //策略模式,传递不同的参数,调用不同的策略 class Strategy{ public function getWay(IStrategy $obj) { $obj->ontheway(); } } $obj=new Strategy(); $obj->getWay(new Walk); //走着去 $obj->getWay(new Bick); //骑自行车去 $obj->getWay(new Bus); //坐巴士去
その他の PHP 関連テクノロジの記事については、PHP グラフィック チュートリアル 列を参照して学習してください。
以上がPHPファクトリーモードとストラテジーモードの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。