PHP设计模式之观察者模式

引导1: 什么是观察者模式? 
观察者模式模式也叫消息订阅,作用是一个操作发生变化时,便会围绕这个操作进行一系列的其他操作。

引导2: 应用案例 
作为一个没有女朋友的程序员是不是每天只有10086给你发短信 和微信呢?大概是这样,当你一不小心欠费了或者流量超额时,手机上不仅仅会接到短信,而且微信也能接收到消息,甚至还有你的邮箱也会接到详细的消息。更多生活中案例还有信用卡消费后 也会接到短信,微信,邮件等等···········

上代码

<?php
/**
 * Created by PhpStorm.
 * User: rjj
 * Date: 2017/7/3
 * Time: 22:31
 */

//通知消息  观察者
interface INotice{
    function doNotice($msg);
}

//业务接口   被观察者
interface IDeductions{
    function addNotice($notice);
}

class Deductions implements IDeductions{
    //存储消息通知
    private $_notice = [];
    //TODO:这里省略话费检查业务
    //发送消息   循环执行已经添加的消息通知业务
    public function sendNotice($msg){
        foreach($this->_notice as $notice){
            $notice->doNotice($msg);
        }
    }


    //添加消息通知类型
    public function addNotice($notice)
    {
        $this->_notice[] =$notice;
    }
}
//短信提醒
class MsnNotice implements INotice {
    public function doNotice($msg)
    {
        echo '来至短信提醒:'.$msg.PHP_EOL;
    }
}

//邮箱提醒
class EmailNotice implements INotice {
    public function doNotice($msg)
    {
        echo '来至邮箱提醒:'.$msg.PHP_EOL;
    }
}


//微信提醒
class WechatNotice implements INotice {
    public function doNotice($msg)
    {
        echo '来至微信提醒:'.$msg.PHP_EOL;
    }
}

$deduction = new Deductions();

//添加
$deduction->addNotice(new MsnNotice());
$deduction->addNotice(new EmailNotice());
$deduction->addNotice(new WechatNotice());
$deduction->sendNotice('您的手机以欠费');

可能你在别处看到的观察者模式和我的有所不同,不过设计模式并没有十分统一的代码规范,只是一种思想而已,弄懂思维就好,自己也可以用另外的方式来实现! 
还请多多指点

转载于:https://my.oschina.net/raojiangjin/blog/1544231

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值