观察者模式

观察者模式,它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。当具体主题的内部状态改变时,给所有登记过的观察者发出通知。
观察者也称为发布-订阅(Publish-Subscribe)模式

代码如下:

<?php

interface Subject{
	public function attach($params);
	public function detach($params);
	public function notify();
}

class Stock implements Subject{
	private $users = [];

	public function attach($user) {
		array_push($this->users, $user);
	}

	public function detach($user) {
		$index = array_search($user, $this->users);
		array_splice($this->users, $index, 1);
	}

	public function notify() {
		foreach($this->users as $user) {
			$user->operate();
		}
	}
}

interface Observer{
	public function operate();
}

class User implements Observer{
	public function operate() {
		//股票加减仓
		echo 'stock add or reduce positions';
	}
}

//client
$user = new User();
$stock = new Stock();
$stock->attach($user);
$stock->notify();
最后总结:
观察者这个名字让我感觉理解起来很费力,其实用别名“消息订阅发布模式”更容易理解。
观察者在功能类订阅某种类型的消息后,只要功能类有这种变化,就向观察者告知(发布)。
Laravel框架里的事件机制就是利用了这种设计模式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值