zoukankan      html  css  js  c++  java
  • php设计模式之适配器模式

    适配器模式

    适配器设计模式的目标是有助于面向对象的代码,该模式下可以为独享接口创建对话,

    虽然可以修改现有代码从而采用新功能所期望的方式运行,但我们最好还是创建一个适配器对象。

    <?php
    /**
     * Adapter.php
     * 适配器模式
     */
    
    /**
     * 旧接口
     */
    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(STDERR,$this->_errorObject->getError());
        }
    }
    
    /** create the new 404 error object */
    $error = new errorObject("404:Not Found");
    $log = new logToConsole($error);
    $log->write();
    
    
    /**
     * 新方法
     */
    class logToCSV
    {
        const CSV_LOCSTION = 'log.csv';
        private $_errorObject;
    
        public function __construct($errorObject){
            $this->_errorObject = $errorObject;
        }
    
        public function write(){
            $line = $this->_errorObject->getErrorNunber();
            $line .= ',';
            $line .= $this->_errorObject->getErrorText();
            $line .= "
    ";
    
            file_put_contents(self::CSV_LOCSTION,  $line, FILE_APPEND);
        }
    }
    /**
     * 制作适配器,重新组装数据,使之能应用于新方法
     */
    class logToCSVAdapter extends errorObject
    {
        private $_errorNunber, $_errorText;
    
        public function __construct($error){
            parent::__construct($error);
            $parts = explode(':', $this->getError());
            $this->_errorNunber = $parts[0];
            $this->_errorText = $parts[1];
        }
    
        public function getErrorNunber(){
            return $this->_errorNunber;
        }
    
        public function getErrorText(){
            return $this->_errorText;
        }
    }
    
    /**create the new 404 error object adapted for csv  */
    $error = new logToCSVAdapter("404:Not Found");
    $log = new logToCSV($error);
    $log->writer();
  • 相关阅读:
    #define、const、typedef的区别
    《软件调试的艺术》学习笔记——GDB使用技巧摘要
    作为员工与老板的竞争力区别
    部分经典IT书籍
    对找工作功不可没——评《深入理解计算机系统》
    前端UI框架小汇总
    Visual Studio 2017 序列号 Key 激活码 VS2017 注册码
    Wampserver 2.5 多站点配置方法
    ThinkPHP3.1快速入门(9)变量输出
    ThinkPHP3.1快速入门(8)视图
  • 原文地址:https://www.cnblogs.com/happig/p/5365657.html
Copyright © 2011-2022 走看看