php设计模式 策略模式

WBOY
Libérer: 2016-07-29 09:01:11
original
911 Les gens l'ont consulté

策略模式:

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

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

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>?>
Copier après la connexion

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>?>
Copier après la connexion

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>?>
Copier après la connexion

Page.php

<span><span>namespace Baobab;</span><br>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>
Copier après la connexion

index.php

<span>$page</span> = <span>new</span><span> Baobab\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();
Copier après la connexion

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

以上就介绍了php设计模式 策略模式,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!