设计模式之策略模式

2019年06月15日 21:45:15阅读数:1139博客 / 齐天大圣的博客 / php设计模式

策略模式:将一组特定的行为和算法封装成类,以适应某种特定的上下文环境,这种模式就是策略模式。

场景:商品的促销活动类型有很多,如:买满减活动、打折、送积分,如何来完成该需求。

<?php

Interface Strategy
{
    function sale ();
}

// 打折策略
class DiscountStrategy implements Strategy
{
    private $money = 0;    // 总价
    private $rate = 100;    // 折扣

    public function __construct($money, $rate)
    {
        $this->money = $money;
        $this->rate = $rate;
    }

    public function sale ()
    {
        $money = $this->money - round($this->money * ($this->rate / 100), 2);
        echo "总价{$this->money},打完折后价格:$money\n";
    }
}

// 送积分
class ScoreStrategy implements Strategy
{
    private $money = 0;    // 总价
    private $rate = 0;    // 兑换比率

    public function __construct($money, $rate)
    {
        $this->money = $money;
        $this->rate = $rate;
    }

    public function sale ()
    {
        $score = $this->money * ($this->rate / 100);
        echo "送积分$score\n";
    }
}

class Page
{
    public function buy ()
    {
        $obj = $_GET['obj'];
        echo (new $obj(100,10))->sale();
    }
}

(new Page())->buy();




版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • 博主信息
    齐天大圣的博客
    博文
    6
    粉丝
    3
    评论
    1
    访问量
    7984
    积分:0
    P豆:230