国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP 觀察者模式的實(shí)現(xiàn)代碼

2024-05-04 23:07:42
字體:
供稿:網(wǎng)友

代碼如下所示:

復(fù)制代碼 代碼如下:


//被察者抽象類
class Observed implements SplSubject{
protected $_name;
protected $_observers;

//實(shí)例化,生成一個觀察者對象
public function __construct(){
$this->_observers = new SplObjectStorage();
}

// 添加觀察者對象
public function attach(SplObserver $observer){
$this->_observers->attach($observer);
}

//刪除觀者對象
public function detach(SplObserver $observer){
$this->_observers->detach($observer);
}

//通知消息
public function notify(){
foreach($this->_observers as $observer){
$observer->showMessage($this);
}
}

//普通方法: 設(shè)置值
public function setName($name){
$this->_name = $name;
$this->notify();
}

//普通方法: 獲取值
public function getName(){
return $this->_name;
}

//普通方法:設(shè)置年齡
public function setAge($age){
$this->age = $age;
foreach($this->_observers as $observer){
$observer->showAge($this->_name,$this->age);
}
}

}

// 觀察者抽象類
class Observer implements SplObserver{

//顯示消息提示
public function showMessage(SplSubject $obj){
$user = $obj->getName();
if($user==='admin'){
echo '您好, ',$user,'歡迎您進(jìn)入管理后臺<br/>';
}else{
echo "你好, '$user' 你已經(jīng)被添加到了用戶列表<br/>";
}
}
//這是繼承父類的抽象方法
public function update(SplSubject $subject) {}

//顯示個人年齡
public function showAge($name,$age){
echo "<script>alert('$name 的年齡是: $age')</script>";
}
}

$subject = new Observed(); //生成一個被觀察者對象
$observer = new Observer(); //生成一個觀察者對象
$subject->attach($observer);//把觀察者傳入到被觀察中去
$subject->setName('張三'); //調(diào)用 setName 方法
/*
* 通過面的 setName 就會調(diào)用 $this->notify();
* 通過調(diào)用 $this->notify()就會調(diào)用 $observer->showMessage($this)方法,
* 即每個觀察者對象的 showMessage($obj)方法;
*/
$subject->setName('admin');
$subject->setAge(24);

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 乌兰浩特市| 乌苏市| 河间市| 牙克石市| 抚顺市| 柞水县| 鄂州市| 老河口市| 板桥市| 施秉县| 桃园市| 齐齐哈尔市| 广宗县| 西充县| 古蔺县| 府谷县| 康定县| 新建县| 台中市| 钟祥市| 吉隆县| 无为县| 临沂市| 平塘县| 子长县| 宣武区| 卓资县| 扬中市| 尤溪县| 龙岩市| 郯城县| 黄骅市| 定日县| 巫山县| 沭阳县| 萍乡市| 沁水县| 吴江市| 井冈山市| 华宁县| 金溪县|