PHP 设计模式之策略模式

11 篇文章 1 订阅

典型的应用场景:当男性用户访问网站上显示男性相关的类目和广告,当女性用户访问网站时显示女性相关的类目和广告,或默认访问时显示指定相关的类目和广告

<?php

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



class FemaleStrategy implements UserStrategy
{
    function showAd()
    {
        echo "female ad\n";
    }

    function showCategory()
    {
        echo "female category\n";
    }
}


class MaleStrategy implements UserStrategy
{
    function showAd()
    {
        echo "male ad\n";
    }

    function showCategory()
    {
        echo "male category\n";
    }
}

class OtherStrategy implements UserStrategy
{
    function showAd()
    {
        echo "other ad\n";
    }

    function showCategory()
    {
        echo "other category\n";
    }
}






class Page
{
    private $strategy;

    function index()
    {
        $this->strategy->showAd();
        $this->strategy->showCategory();
    }

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


$page = new Page;

if($argv[1] == 1) {
    $strategy = new FemaleStrategy;
} elseif ($argv[1] == 2) {
    $strategy = new OtherStrategy;
} else {
    $strategy = new MaleStrategy;
}


$page->setStrategy($strategy);
$page->index();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值