PHPポリシーモード


个人は设计のモードがただ実际の応用の中でやっとゆっくりと熟知することができると感じて、最后まで心の中でモードがあって、何事もモードがあって、ハハ
例えば、電子商取引のトップページでは、登録ユーザーの性別によって広告や商品のカテゴリなど、異なる内容を表示することができます.伝統的な方法:プログラムの内部で複数のif、elseを使って判断して、このように維持するのは難しいです.例えば、私はもう一人の人妖ユーザーに参加したいです.では、私はプログラムにelse if判断を加えなければなりません.このように書かれたプログラムは散らかっていて、メンテナンスしにくいように見えます.ポリシーモード:実装の考え方は,インタフェースを作成し,各カテゴリのユーザに対してクラスを作成し,インタフェース内のメソッドをそれぞれ実装し,トップページでどのクラスをインスタンス化するかを判断する.コードは次のとおりです.
インタフェースファイルphp
<?php //    ,          interface UserStrategy { //        public function showAd(); //        public function showCategory(); } ?>

男性ユーザーの具体的な表示php
<?php //           class MaleUserStrategy implements UserStrategy { //          iphone6s    public function showAd() { echo 'Iphone6s'; } //          public function showCategory() { echo '     '; } } ?>

女性ユーザーの具体的な表示php
<?php
class FemaleUserStrategy implements UserStrategy {
    public function showAd() {
        echo '2016  ';
    }
    public function showCategory() {
        echo '  ';
    }
}
?>

ここで、トップページファイルStrategyを作成します.php
<?php //                         require,                       //             ,                   define('BASEDIR', __DIR__); //      require     ,     Config.php require 'Config.php'; //PHP   spl ,                 //  spl_autoload_register()      ?    ,                             ,            ! spl_autoload_register('Config::autoload'); class Strategy { //            protected $_strategy; //             public function index() { echo 'Ad:'; echo $this->_strategy->showAd(); echo '<br/>'; echo 'Category:'; echo $this->_strategy->showCategory(); } //        public function setStrategy($strategy) { $this->_strategy = $strategy; } } //      $strategy = new Strategy(); //  $_GET['female']                 --                             ,                          if(isset($_GET['female'])) { $people = new FemaleUserStrategy(); } else { $people = new MaleUserStrategy(); } //           $strategy = setStrategy($people); //       --         ,                        。 $strategy->index(); ?>

ファイルの自動導入php
<?php //        ,           ,            ,                ,           ,             ,psr-0   class Config { //              static function autoload($class) { //                require BASEDIR.'/'.$class.'.php'; } } ?>

今後のプログラミングでよく考え、熟練していることを自分に戒める.