登录  /  注册
博主信息
博文 6
粉丝 3
评论 1
访问量 8690
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
设计模式之策略模式
齐天大圣的博客
原创
1236人浏览过

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

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

<?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举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学