php设计模式1--观察者模式

设计模式开篇

作为一个php的初学者,如果想要对框架(如tp、laravel等)有更好的理解,阅读其中的源码,就必须对设计模式有一定的了解。框架中将各种设计模式进行组合,尤其是laravel,理解设计模式对于深入框架有很大的帮助。
后面的文章将以结合代码的方式来讲解我对设计模式的理解,希望能对看到这篇文章的人有一定的帮助,有错误也欢迎指正。

观察者模式

观察者模式,有时又被称为发布(publish)-订阅(Subscribe)模式。是软件设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实现事件处理系统。

个人理解:观察者模式一般肯定会存在两个角色,观察者和被观察者。当被观察者的某些状态发生变化的时候,观察者就会去执行某些方法。如用户下单,用户购买下单后,可能会执行如通知用户、减少库存、订单状态改变等一系列动作。如果全部写在一个方法当中,不利于维护。这时利用观察者模式就会减少代码的耦合度,利于修改维护。

代码详解

注:此代码结合了网上的一些案例完成

/**被观察着**/
class observed
{
	private $observers=[];         //私有数组存放注册进入的观察者
	
	/**注册观察者类将其放入$observers私有数组中**/
	public function register(observer $observer)
    { 
        $this->observers[] = $observer;
    } 
	
	/**执行已经注入的观察者模式**/
    public function notify()
    {
        foreach ($this->observers as $observer) {
            $observer->doSomething();
        }
    }

}



/**观察者统一接口,有利于被观察者的调用**/
interface observer
{
    public function doSomething();
}



/**观察者类,继承观察者接口,实现其中方法**/
class observer1 implements observer
{
 	public function doSomething()
 	{
		echo "观察者observer1执行了此方法";
	}
}

class observer2 implements observer
{
 	public function doSomething()
 	{
		echo "观察者observer2执行了此方法";
	}
}


/**具体实现**/
$observed=new observed();
$observed->register(new observer1());
$observed->register(new observer2());
$observed->notify();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值