观察者模式
<?<span>php
</span><span>//</span><span>定义观察者调用接口</span>
<span>class</span><span> transfer{
</span><span>protected</span> <span>$_observers</span> = <span>array</span><span>();
</span><span>//</span><span>注册对象</span>
<span>public</span> <span>function</span> register(<span>$sub</span><span>){
</span><span>$this</span>->_observers[] = <span>$sub</span><span>;
}
</span><span>//</span><span>外部统一调用</span>
<span>public</span> <span>function</span><span> trigger(){
</span><span>if</span>(!<span>empty</span>(<span>$this</span>-><span>_observers)){
</span><span>foreach</span>(<span>$this</span>->_observers <span>as</span> <span>$observer</span><span>){
</span><span>$observer</span>-><span>update();
}
}
}
}
</span><span>//</span><span>观察者接口</span>
<span>interface</span><span> obserable{
</span><span>public</span> <span>function</span><span> update();
}
</span><span>//</span><span>实现观察者</span>
<span>class</span> listen <span>implements</span><span> obserable{
</span><span>public</span> <span>function</span><span> update(){
</span><span>echo</span> 'now first time you need to do listen<br/>'<span>;
}
}
</span><span>class</span> read <span>implements</span><span> obserable{
</span><span>public</span> <span>function</span><span> update(){
</span><span>echo</span> 'now first time you need to read<br/>'<span>;
}
}
</span><span>class</span> speak <span>implements</span><span> obserable{
</span><span>public</span> <span>function</span><span> update(){
</span><span>echo</span> 'now first time you need to speak<br/>'<span>;
}
}
</span><span>class</span> write <span>implements</span><span> obserable{
</span><span>public</span> <span>function</span><span> update(){
</span><span>echo</span> 'now first time you need to write<br/>'<span>;
}
}
</span><span>$transfer</span> = <span>new</span><span> transfer();
</span><span>$transfer</span>->register(<span>new</span><span> listen());
</span><span>$transfer</span>->register(<span>new</span><span> read());
</span><span>$transfer</span>->register(<span>new</span><span> speak());
</span><span>$transfer</span>->register(<span>new</span><span> write());
</span><span>$transfer</span>-><span>trigger();
</span>
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号