ホームページ > php教程 > php手册 > php设计模式 策略模式,php设计模式

php设计模式 策略模式,php设计模式

WBOY
リリース: 2016-06-13 08:45:38
オリジナル
1023 人が閲覧しました

php设计模式 策略模式,php设计模式

策略模式:

将一组特定的行为和算法封装成类,以适应某些特定的上下文环境;

实际应用举例,假如一个电商网站系统,针对男性女性用户要各自跳转到不同的商品类目,并且所有广告位展示不同的广告。

UserStrategy.php

<?<span>php
namespace Baobab;

</span><span>interface</span><span> UserStrategy{
    </span><span>function</span><span> showAd();
    </span><span>function</span><span> showCategory();
}
</span>?>
ログイン後にコピー

FemaleUserStrategy.php

<?<span>php
namespace Baobab;

</span><span>class</span> FemaleUserStrategy <span>implements</span><span> UserStrategy{
    </span><span>function</span><span> showAd(){
        </span><span>echo</span> '2016新款女装'<span>;
    }
    </span><span>function</span><span> showCategory(){
        </span><span>echo</span> '女装'<span>;
    }
}

</span>?>
ログイン後にコピー

MaleUserStrategy.php

<?<span>php
namespace Baobab;

</span><span>class</span> MaleUserStrategy <span>implements</span><span> UserStrategy{
    </span><span>function</span><span> showAd(){
        </span><span>echo</span> 'Iphone6s plus'<span>;
    }
    </span><span>function</span><span> showCategory(){
        </span><span>echo</span> '电子产品'<span>;
    }
}

</span>?>
ログイン後にコピー

index.php

<span>class</span><span> Page{
     </span><span>protected</span> <span>$strategy</span><span>;
     </span><span>function</span><span> Index(){
         </span><span>$this</span>->strategy-><span>showAd();
         </span><span>echo</span> '<br/>'<span>;
         </span><span>$this</span>->strategy-><span>showCategory();
     }
     </span><span>function</span> setStrategy(Baobab\UserStrategy <span>$strategy</span><span>){
         </span><span>$this</span>->strategy = <span>$strategy</span><span>;
     }
}
</span><span>$page</span> = <span>new</span><span> Page();
</span><span>if</span> (<span>isset</span>(<span>$_GET</span>['female'<span>])){
    </span><span>$strategy</span> = <span>new</span><span> Baobab\FemaleUserStrategy();
}</span><span>else</span><span>{
    </span><span>$strategy</span> = <span>new</span><span> Baobab\MaleUserStrategy();
}
</span><span>$page</span>->setStrategy(<span>$strategy</span><span>);
</span><span>$page</span>->Index();
ログイン後にコピー

使用策略模式可实现Ioc,依赖倒置、控制反转

 

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