美文网首页
PHP设计模式:策略模式

PHP设计模式:策略模式

作者: Zed_790e | 来源:发表于2019-06-18 18:12 被阅读0次

    前言

    策略模式的应用非常的多,尤其在商城中更是经常会被用到,打个比方,我们生活中经常遇到的优惠,优惠就有很多的策略,

    • 满100减50
    • 新人折扣7折
    • 老板自己要的打0折(不要钱)
      还有很多很多这样的场景,为了便于理解(事实证明我还是不适合口头阐述),写了一个策略类,用比较通俗易懂的方式以代码形式表达出来

    代码

    <?php
    
    //定义一个同学抽象类
    abstract class ClassMateStrategy
    {
        //定义一个行为的方法
        abstract public function behavior();
    }
    
    //定义一个同学:小明
    class XiaoMing extends ClassMateStrategy
    {
        public function behavior()
        {
            echo '小明告诉了老师:XX被打了' . PHP_EOL;
        }
    }
    
    //定义一个同学:张三
    class ZhangSan extends ClassMateStrategy
    {
        public function behavior()
        {
            echo '张三大吼一声吗个鸡打我同学!(张三加入了打架)' . PHP_EOL;
        }
    }
    
    //定义一个同学:李梅
    class LiMei extends ClassMateStrategy
    {
        public function behavior()
        {
            echo '李梅打开一瓶八二年的可乐默默看着' . PHP_EOL;
        }
    }
    
    //定义一个上下文类
    class Content
    {
        //定义一个变量用来挂载类
        public $classMate;
    
        //构造函数传进来一个类
        public function __construct($ClassMate)
        {
            $this->classMate = $ClassMate;
        }
    
        public function help()
        {
            $this->classMate->behavior();
        }
    }
    
    echo '有一天XXX正在打架!' . PHP_EOL;
    //使用小明策略
    $xiaoming = new Content(new XiaoMing());
    $xiaoming->help();
    //使用张三策略
    $zhangSan = new Content(new ZhangSan());
    $zhangSan->help();
    //使用李梅策略
    $liMei = new Content(new LiMei());
    $liMei->help();
    

    输出

    以上的代码会输出


    image.png

    相关文章

      网友评论

          本文标题:PHP设计模式:策略模式

          本文链接:https://www.haomeiwen.com/subject/rzrqqctx.html