设计模式(适配器)
时间:2021-07-01 10:21:17
帮助过:17人阅读
个人理解:适配器主要充当原功能与新功能之间的媒介,也就是说新功能要调用原有的部分功能。这样可以提高代码的重用性。(如果理解的不对,请各位大拿指点,谢谢)
- class errorObject{
- private $__error;
- public function __construct($error)
- {
- $this->__error=$error;
- }
- public function getError()
- {
- return $this->__error;
- }
- }
- class logToConsole{
- private $__errorObject;
- public function __construct($errorObject)
- {
- $this->__errorObject=$errorObject;
- }
- public function write()
- {
- fwrite("errorlog.txt",$this->__errorObject->getError());
- }
- }
- class logToCVS
- {
- const LOG_LOCATION='log.csv';
- private $__errorObject;
- public function __construct($errorObject)
- {
- $this->__errorObject=$errorObject;
- }
- public function write()
- {
- $line=$this->__errorObject->getErrorNumber();
- $line.=',';
- $line.=$this->__errorObject->getErrorText();
- $line.="\n";
- file_put_contents(self::LOG_LOCATION,$line,FILE_APPEND);
- }
-
- }
- class logToCSVAdapter extends errorObject{ // 适配器
- private $_errorNumber,$_errorText;
- public function __construct($error)
- {
- parent::_construct($error);
- $parts=explode(":",$this->getError());
- $this->_errorNumber=$parts[0];
- $this->_errorText=$parts[1];
- }
- public function getErrorNumber()
- {
- return $this->_errorNumber;
- }
- public function getErrorText()
- {
- return $this->_errorText;
- }
- }
- // 把错误信息 写入到txt
- $error=new errorObject("404:not fuond");
- $log=new logToConsole($error);
- $log->write();
- // 把错误信息 写入csv
- $error=new logToCSVAdapter("404:not fuond");
- $log=new logToCVS($error);
- $log->write();
|