责任链模式
责任链模式
eatnothing 发表于5个月前
责任链模式
  • 发表于 5个月前
  • 阅读 12
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

摘要: php实现

责任链模式

使多个对象有机会处理请求,从而避免了请求者和发送者的耦合关系,将这些对象连城一条链,并沿着这条链传递请求,直到有人处理它

#####组成

  • 请求者(也可以有抽象类)
  • 抽象管理者
  • 实体管理者(>2)
<?php

/**
 * User: didi
 * Date: 2017/8/31
 * Time: 下午5:20
 */
class Request {
    public $name;
    public $num;
}


abstract class  Manager {
    protected $name;
    protected $manager;

    public function __construct($_name){
        $this->name = $_name;
    }


    public function setManager(Manager $manager){
        $this->manager = $manager;
    }

    abstract function apply(Request $request);
}


class Father extends Manager {
    public function __construct($name){
        parent::__construct($name);
    }

    public function apply(Request $request){


        if ($request->num != 5) {
            echo 'this is not 5';
        } else {
            $this->manager->apply($request);
        }

    }
}

class GrandFather extends Manager {
    public function __construct($name){
        parent::__construct($name);
    }

    public function apply(Request $request){
        
        echo 'fuck this is ur grandFather';

    }
}


class Client {


    public function __construct(){
        $re = new Request();
        $re->num = 5;
        $father  = new Father('fucker');
        $grand_father = new GrandFather('mother');

        $father->setManager($grand_father);


        $father->apply($re);

    }
}


$a = new Client();
标签: 设计模式
共有 人打赏支持
粉丝 36
博文 128
码字总数 68736
×
eatnothing
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: