php 观察者模式

观察者模式:

<?php
require_once("guanchazhe.php");

class BorderDecorator extends Widget{
	private $widget;
	
	function __construct(Widget $widget){
		$this->widget=$widget;
	}
	
	public function draw(){
		echo "<table border=0 cellpadding=1 bgcolor=#3366ff>";
		echo "<tr bgcolor=#ffffff><td>";
		$this->widget->draw();
		echo "</td></tr></table>";
	}
	
	public function update(Observable $subject){
		$this->widget->update($subject);		
	}
}

$widgetA=new BorderDecorator($widget);
$widgetA->draw();

?>


widget类的改写:

//观察者
interface Observer{
	public function update(Observable $subject);
}

abstract class Widget implements Observer{
	private $subject;
	abstract public function draw();
	public function update(Observable $subject){
		$this->subject=$subject;
	}
	public function getSubject(){
		return $this->subject;
	}
}

class BasicWidget extends Widget{
	function __construct(){
		
	}
	
	public function draw(){
		$html="<table border=1 width=130>";
		$html.="<tr><td colspan=3 bgcolor=#cccccc>" .
				"<b>Instrument Info<b></td></tr>";
		$data=$this->getSubject()->getData();
		$numRecords=count($data[0]);
		for($i=0;$i<$numRecords;$i++){
			$instms=$data[0];
			$prices=$data[1];
			$years=$data[2];
			$html.="<tr><td>$instms[$i]</td><td>$prices[$i]</td><td>$years[$i]</td></tr>";
		}
		$html.="</table><br>";
		echo $html;
	}
}


 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值