本人是一個模式學習的新手,學習到裝飾模式的時候,我想到了一個問題,我是否可以利用一個屬性值$message來對內容進行一些存儲,就編下了下面的代碼,始終沒辦法找到原因,我想得到的結果是:html過濾敏感詞匯過濾測試一下 但是結果卻是html過濾測試一下,于是我就思考是否是沒有將$msg存到$message中,但是但是為什么結果又是html過濾測試一下,中斷測試也沒能找到答案,所以再這里想得到各位的幫助,一起討論討論這段代碼,<?php abstract class messageDetail { abstract function filter($msg); } class setmessage extends messageDetail { public function filter($msg) { return $msg; } } class messageHandle extends messageDetail { public $message; public $obj; public function __construct($obj) { $this -> obj = $obj; } public function filter($msg) { $this -> message = $msg; } } class htmlFilter extends messageHandle { public function filter($msg) { parent::filter($msg); return 'html過濾'.$this->message; } } class ensitiveFilter extends messageHandle { public function filter($msg) { parent::filter($msg); return '敏感詞匯過濾'.$this->message; } } $obj = new htmlFilter(new ensitiveFilter(new setmessage())); echo $obj -> filter('測試一下');
關于裝飾模式引發的思考
千萬里不及你
2019-03-22 23:15:14