Home  >  Article  >  Backend Development  >  PHP design pattern strategy pattern, PHP design pattern_PHP tutorial

PHP design pattern strategy pattern, PHP design pattern_PHP tutorial

WBOY
WBOYOriginal
2016-07-12 08:58:29793browse

php design pattern strategy mode, php design pattern

Strategy mode:

Encapsulate a specific set of behaviors and algorithms into classes to adapt to certain specific contexts;

Practical application example, if an e-commerce website system requires male and female users to jump to different product categories, and all advertising slots display different ads.

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, dependency inversion, and control inversion can be realized using strategy mode

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/1104059.htmlTechArticlephp design pattern strategy pattern, php design pattern strategy pattern: Encapsulate a specific set of behaviors and algorithms into classes, To adapt to certain specific contexts; practical application examples, if a...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn