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();



























  • 相关阅读:
    关于一位程序员入门的面试经验
    Outpro的博客测试
    优先队列
    linux (centos 6.2)在输入查询或者操作命令时提示-bash: fork: cannot allocate memory
    win10下JDK环境变量
    Mac OS如何安装IDEA
    解决下载github代码慢的问题
    vue 模板语法之指令
    vue的基本介绍以及第一个程序
    消息中间的几大应用场景
  • 原文地址:https://www.cnblogs.com/riskyer/p/3281500.html
Copyright © 2011-2022 走看看