首页 > 学院 > 开发设计 > 正文

装饰模式

2019-11-08 02:01:29
字体:
来源:转载
供稿:网友
<?php// 装饰模式function echoLine($msg) {      echo $msg, '<br/>';  }class RequestHelper{	/**	 * return class resource id	 */	public function __toString()	{		ob_start();		var_dump($this);		$str = ob_get_clean();		if (PReg_match('/object/(' . __CLASS__ . '/)/#/d+/', $str, $matches)) {			return $matches[0];		}		return __CLASS__;	}}// ---------------------------------------------------------interface ProcessRequest{	public function process(RequestHelper $req);}/** * http request */class HttpRequest implements ProcessRequest{	public function process(RequestHelper $req)	{		echoLine('Process http request[' . $req . ']');	}}/** * Log Decorator * add log function */class LogRequest implements ProcessRequest{	protected $pr;	public function __construct(ProcessRequest $pr)	{		$this->pr = $pr;	}		public function process(RequestHelper $req)	{		echoLine('Add log function!');		$this->pr->process($req);	}}/** * Authenticate Decorator * add authenticate function */class AuthenticateRquest implements ProcessRequest{	protected $pr;	public function __construct(ProcessRequest $pr)	{		$this->pr = $pr;	}		public function process(RequestHelper $req)	{		echoLine('Add authenticate function!');		$this->pr->process($req);	}}// test code$req = new RequestHelper();$process = new HttpRequest();// add log$process = new LogRequest($process);// add auth$process = new AuthenticateRquest($process);// process request$process->process($req);
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表