首页 > 其他 > 详细

观察者模式observer(用于不同类的中 板块的显示或其它操作)

时间:2019-04-22 11:49:33      阅读:119      评论:0      收藏:0      [点我收藏+]
逻辑:


<?php
define(‘BASEDIR‘,__DIR__);
require BASEDIR."/Phpclass/Loader.php";//引入一个能载入全部类的文件
spl_autoload_register(\\Phpclass\\Loader::autoload‘);//引用该类中自动注册文件的函数

class Page extends \Phpclass\Observerbase //0、扩展Observerbase类,里面一个add方法和一个note通知方法
{
function triger()
{
echo "逻辑一最初的显示\n";
$this->notify();//1、调用父的通知方法
}
}
class Observeer1 implements \Phpclass\Iobserver //5、创建一个接口类,应用接口的方法,然后可进行相关的内容进行修改
{
function update($info=null){

echo "this is a new luoji \n";
}

}

class Observeer2 implements \Phpclass\Iobserver
{
function update($info=null){

echo "this is a new 更进一步\n";
}

}

$page =new Page();

$page->addobserver(new Observeer1);//当前对象,调用父类的add方法,而传的对象,就是按接口规定的 对象,然后进行相关操作
$page->addobserver(new Observeer2);
$page->triger();
-----------------------------------------------------------------------------------------Index6.php
<?php
namespace Phpclass;
abstract class Observerbase
{
private $observers =array();
function addobserver( Iobserver $observer){//2add类,相当于于把,新加的对象放到一个数组内
$this->observers[] = $observer;
}
function notify(){//3、通知方法,可以理解为把每个对象遍历,然后调用当前对象的update方法,而当前对象又在在规定的接口中
foreach ($this->observers as $observer)
{
$observer->update();//3.5、这里的update方法,就可以自己在新的类中,自定义了
}

}

}
-----------------------------------------------------------------------------------------Observerbase.php
<?php
namespace Phpclass;
interface Iobserver //4、接口中的update方法
{
function update($info = null);
}

-----------------------------------------------------------------------------------------Iobserver.php
 

观察者模式observer(用于不同类的中 板块的显示或其它操作)

原文:https://www.cnblogs.com/nfyx/p/10749217.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!