设计模式之策略模式
来源:互联网 发布:淘宝的全屏海报尺寸 编辑:程序博客网 时间:2024/05/22 01:28
<?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\n";
}
}
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();
/**
* 某个对象不必自身包含逻辑,而是能够应用其他对象的算法
*
*/
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\n";
}
}
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();
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- 设计模式之策略模式
- oracle物化视图系列
- Android开发:Handler Runnable和Thread之间的区别和联系
- android4.3环境搭建
- LeetCode - Implement strStr()
- GDB调试和NATIVE内存问题分析整理
- 设计模式之策略模式
- eclipse中添加xml提示功能
- 内核态 用户态 区别
- think in java interview-高级开发人员面试宝典(七)
- maven Nexus
- objc.io,一个定期发布oc相关的最佳实践和高级技术的文章的网站,含金量比较高
- MarkLogic中的Score和Relevance (一)
- 同站点下不同虚拟目录间session共享
- ORACLE 理论概念