zoukankan      html  css  js  c++  java
  • 设计模式之策略模式

    <?php
    /**
     * 某个对象不必自身包含逻辑,而是能够应用其他对象的算法
     *
     */


    class LogStrategy
    {
        public $message;
        public $level;
        public $type;


        protected $_strategy;


        public function __construct($message, $level, $type)
        {
            $this->message = $message;
            $this->level = $level;
            $this->type = $type;
        }


        public function setStrategy($strategyObj)
        {
            $this->_strategy = $strategyObj;
        }


        public function log()
        {
            $this->_strategy->log($this);
        }
    }


    interface Log
    {
        public function log($logObject);
    }


    class DBStrategy implements Log
    {


        public function log($logObject)
        {
            $this->_logToDB($logObject);
        }


        private function _logToDB($logObject)
        {
            var_dump($logObject);
            echo "log to db ";
        }
    }


    class QUEStrategy implements Log
    {
        public function log($logObject)
        {
            $this->_logToQUE($logObject);
        }




        private function _logToQUE($logObject)
        {


            var_dump($logObject);
            echo "log to queue";
        }
    }


    echo "<pre>";
    $log = new LogStrategy("can't find the file", "error", "user_error");
    $log->setStrategy(new DBStrategy());
    $log->log();


    $log->setStrategy(new QUEStrategy());
    $log->log();



























  • 相关阅读:
    表单提交方式
    js--dom对象
    js--bom对象
    css布局的漂浮、position定位
    python语法学习第五天--lambda表达式、filter()、map()
    python语法学习第五天--函数(2)
    python3语法学习第五天--函数(1)
    python3语法学习第四天--序列
    leetcode| 84. 柱状图中最大的矩形
    leetcode| 56. 合并区间
  • 原文地址:https://www.cnblogs.com/riskyer/p/3281500.html
Copyright © 2011-2022 走看看