ホームページ > バックエンド開発 > PHPの問題 > PHPファクトリーモードとストラテジーモードの違い

PHPファクトリーモードとストラテジーモードの違い

(*-*)浩
リリース: 2023-02-23 06:36:01
オリジナル
4392 人が閲覧しました

ファクトリーは創造パターンであり、その機能はオブジェクトを作成することです;

ストラテジーは行動パターンであり、その機能はオブジェクトに多くの動作の中から 1 つの動作を選択させることです;

PHPファクトリーモードとストラテジーモードの違い

さまざまな懸念事項

懸念オブジェクトは懸念事項の動作のカプセル化を作成します

(推奨学習: PHPビデオ チュートリアル)

さまざまな問題の解決

ファクトリ パターンは、指示を受け入れ、条件を満たすインスタンスを作成する創造的なデザイン パターンです。これは主に、オブジェクトの作成とは完全に独立して、リソースの統一された配布を解決するため、オブジェクトの作成は顧客の特定の用途とは何の関係もありません。主にデータベースの複数選択やクラスライブラリファイルの読み込みなどに使用されます。

ストラテジー モードは、ストラテジーの切り替えと拡張を解決するものです。より簡潔に言うと、ストラテジー ファミリーを定義し、相互に置き換えることができるように個別にカプセル化します。戦略の変更は独立して行われます。戦略を使用しているお客様向け。

ファクトリーはブラック ボックスに相当し、戦略はホワイト ボックスに相当します。

例:

<?php
header(&#39;content-type:text/html;charset=utf-8&#39;);
abstract class Product {
abstract public function getName();
}
class ProductA extends Product  {
public function getName() {
echo &#39;这是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 サイトの他の関連記事を参照してください。

関連ラベル:
php
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート