ホームページ  >  記事  >  バックエンド開発  >  PHPオブジェクト指向の高度なデザインパターン:出現パターンの使用例

PHPオブジェクト指向の高度なデザインパターン:出現パターンの使用例

巴扎黑
巴扎黑オリジナル
2017-05-22 14:06:401775ブラウズ

外観モードとは何ですか?

ファサード デザイン パターンは、必要なロジックとメソッドのコレクションの前にファサード インターフェイスを作成することで、呼び出し元のオブジェクトから複雑さを隠します。

Facade パターンを使用する理由:

Facade パターンに基づくオブジェクトを使用する理由は、サードパーティ ソリューションと連携するためです。オブジェクト指向プロジェクトは関連するオブジェクトのコレクションであるべきであるということを私たちは常に強調していることを覚えておくことが重要です。このアーキテクチャを考慮すると、主任プログラマはサードパーティのオブジェクトを使用する方が賢明であると考えるかもしれません。

アプリケーションに検索 Web ページを提供するとします。このページでは、まず、検索語自体に一致するすべてのデータが検索されます。結果の数が 10 未満の場合、サードパーティのサービスが呼び出されて追加の結果が取得され、アプリケーションによって内部的に見つかった結果の末尾に追加されます。検索外観オブジェクトは、呼び出し元のビュー オブジェクトに結果を返します。内部的には、検索ファサード オブジェクトは内部データベースにクエリを実行するメソッドを呼び出します。次に、Web サービスを通じて Google を呼び出す必要があるかどうかを判断します。必要に応じて、すべての結果も分析されて、均一な結果セットが返されます。

ビジネスプロセスの特定のステップを実行するために必要な複雑なメソッドと論理グループを隠すには、外観デザインパターンに基づいたクラスを使用する必要があります。

UML

この UML 図は、ファサード デザイン パターンを使用したクラス設計を詳しく説明します。

PHPオブジェクト指向の高度なデザインパターン:出現パターンの使用例

以下は上の図の説明です:

1. MyObject クラスには doSomethingRequiresAandB() という名前のパブリック メソッドが含まれており、これは MyObject クラスの実行の単なるステップです。 doSomethingRequiresAandB() メソッドは、オブジェクト LogicFacade の新しいインスタンスを作成します。このインスタンスは、MyObject にとって十分に抽象的な callRequiredLogic() という名前のパブリック メソッドを呼び出します。

2. LogicFacade クラス内の callRequiredLogic() メソッドは、LogicObjectA のインスタンスを作成し、 doSomethingA() メソッドを呼び出す役割を果たします。 また、LogicObjectB のインスタンスを作成し、 doSomethingB() メソッドを呼び出す役割も果たします。

3. 上記のアクションはすべて、MyObject で使用できるように LogicFacade クラスを通じて返されます。


コード表示例の使用:

header("Content-type:text/html;Charset=utf-8");

//子系统角色
class SubSystemOne{
   function mothedOne(){
       echo "方法一<br>";
   }
}
class SubSystemTwo{
   function mothedTwo(){
       echo "方法二<br>";
   }
}
class SubSystemThree{
   function mothedThree(){
       echo "方法三<br>";
   }
}

//外观角色
class Facade{
    private $subSystemOne = null;
    private $subSystemTwo = null;
    private $subSystemThree =null;

    function __construct(){
        $this->subSystemOne =new SubSystemOne();
        $this->subSystemTwo =new SubSystemTwo();
        $this->subSystemThree =new SubSystemThree();
    }

    function mothedA(){
        $this->subSystemOne->mothedOne();
    }
    function mothedB(){
        $this->subSystemTwo->mothedTwo();
    }
    function mothedC(){
        $this->subSystemThree->mothedThree();
    }
    function mothedD(){
        $this->subSystemOne->mothedOne();
        $this->subSystemTwo->mothedTwo();
        $this->subSystemThree->mothedThree();
    }
}

//测试
$facade = new Facade();
$facade->mothedA();
$facade->mothedB();
$facade->mothedC();
$facade->mothedD();


以上がPHPオブジェクト指向の高度なデザインパターン:出現パターンの使用例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。