码迷,mamicode.com
首页 > 其他好文 > 详细

策略模式

时间:2016-12-24 23:03:54      阅读:218      评论:0      收藏:0      [点我收藏+]

标签:user   users   cat   round   class   cte   电商网站   特定   上下文环境   

定义:将一组特定的行为和算法封装成类,以适应某些特定的上下文环境,使用策略模式可以实现Ioc,依赖倒置、控制反转
实际应用举例:假如一个电商网站系统,针对男性女性的用户要各自跳转到不同商品类目,并且所有广告位展示不同的广告(分支逻辑)

class Page
{
protected $strategy;
function index()
{
echo "AD:";
$this->strategy->showAd();
echo "<br/>";

echo "category:";
$this->strategy->showCategory();
echo "<br/>";

}

function setStrategy(\IMooc\UserStrategy $strategy)
{
$this->strategy = $strategy;
}
}

$page = new Page;
if (isset($_GET[‘female‘]))
{
$strategy = new \IMooc\FemaleUserStrategy();
}
else
{
$strategy = new \IMooc\MaleUserStrategy();
}
$page->setStrategy($strategy);
$page->index();

<?php
namespace IMooc;

interface UserStrategy
{
function showAd();
function showCategory();
}

<?php
namespace IMooc;


class FemaleUserStrategy implements UserStrategy
{

function showAd()
{
echo "2016新款女装";
}

function showCategory()
{
echo "女装";
}
}

<?php
namespace IMooc;


class MaleUserStrategy implements UserStrategy
{

function showAd()
{
echo "IPhone6";
}

function showCategory()
{
echo "电子产品";
}
}





策略模式

标签:user   users   cat   round   class   cte   电商网站   特定   上下文环境   

原文地址:http://www.cnblogs.com/phonecom/p/e479387a32a8c75c3cacb36b3043b2db.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!