美文网首页
php设计模式(四)策略模式

php设计模式(四)策略模式

作者: mafa1993 | 来源:发表于2022-06-28 20:16 被阅读0次

    策略模式

    1. 策略模式,将一组特定的行为和算法封装成类,以适应某些特定的上下文环境
    2. 举例:例如,男女用户跳转到不同的页面,并且所有的广告位展示不同的广告, 如果某天新增了一种中性的性别,则需要在所有判断的地方进行修改,使用策略模式规避修改
    3. 实现依赖倒置、控制反转
    // 策略接口 约定策略的行为
    interface UserStrategy {
        public function showAD();
    }
    
    
    // 女性
    class FemaleUser implements UserStrategy {
        public function showAD(){
            echo "nv";
        }
    }
    
    // 男
    
    class MaleUser implements UserStrategy {
        public function showAD(){
            echo "男";
        }
    }
    
    
    // 展示类
    // page类依赖Female和MaleStrategy,但是现在只是依赖UserStrategy,Female和male依赖UserStrategy,从而实现反转,
    // 一般依赖反转的实现方案:一个类依赖另一个类,一般是依赖几个方法,将这几个方法抽象处一个接口,依赖的类,实现这个借口,就实现了倒置 详情见DIP原则
    class Page {
        private $s;
        public function index(){
            $this->a->showAD();
        }
        
        
        public function setStrategy(UserStrategy $class){
            $this->s = $class;
        }
    }
    
    // 只在一个地方判断,配置策略对象(Page),其他地方使用
    if($type=='male' ){
        $obj = new MaleUser();
    }
    if($type == 'Female'){
        $obj = new FemaleUser();
    }
    
    $p = new Page();
    $p->setStrategy($obj);
    $p->index();
    
    

    相关文章

      网友评论

          本文标题:php设计模式(四)策略模式

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