设计模式:观察者模式【练习】

在公司中,当老板不在的时候,大家都免不了偷个懒,比如女同事逛逛淘宝男同事看个篮球比赛但是如果老板突然回来,发现自己没有工作,这种情况就比较尴尬!正在大家为此事上头时,前台王小姐说:“当老板回来时,她会打电话通知大家!”。这样大家就可以放心的偷懒了。——这种情况就可以抽象的理解为观察者模式。前台秘书处负责传递消息,办公室内每个员工都是观察者,当有情况发生时,秘书处会将信息发送至每个观察者,确保不会尴尬!

使用PHP模拟上述情景,观察者数量设置为5;当秘书处发送消息时,各个观察者将打印自己收到的消息,用于回复秘书处。

<?php
//主题接口
interface Boss{
    public function register(Observer $observer);
    public function notify();
}
//观察者接口
interface Observer{
    public function caution();
}
//主题
class Action implements Boss{
    public $_observers=array();
    public function register(Observer $observer){
        $this->_observers[]=$observer;
    }

    public function notify(){
        foreach($this->_observers as $observer){
            $observer->caution();
        }
    }
}


//观察者职员1
class Zhi1 implements Observer{
    public function caution(){
        echo "职员1请注意:BOSS出现,迅速就位!!!<hr/>";
    }
}


//观察者职员2
class Zhi2 implements Observer{
    public function caution(){
        echo "职员2请注意:BOSS出现,迅速就位!!!<hr/>";
    }
}


//观察者职员3
class Zhi3 implements Observer{
    public function caution(){
        echo "职员3请注意:BOSS出现,迅速就位!!!<hr/>";
    }
}


//观察者职员2
class Zhi4 implements Observer{
    public function caution(){
        echo "职员4请注意:BOSS出现,迅速就位!!!<hr/>";
    }
}


//观察者职员1
class Zhi5 implements Observer{
    public function caution(){
        echo "职员5请注意:BOSS出现,迅速就位!!!<hr/>";
    }
}


//观察者职员1
class Zhi6 implements Observer{
    public function caution(){
        echo "职员6请注意:BOSS出现,迅速就位!!!<hr/>";
    }
}


//应用实例
$action=new Action();
$action->register(new Zhi1());
$action->register(new Zhi2());
$action->register(new Zhi3());
$action->register(new Zhi4());
$action->register(new Zhi5());
$action->register(new Zhi6());
$action->notify();


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值