加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP策略模式包括哪些,关键代码是什么

发布时间:2023-07-03 14:54:49 所属栏目:PHP教程 来源:
导读:这篇文章给大家分享的是PHP策略模式包括哪些,核心代码是什么。小编觉得挺实用的,因此分享给大家做个参考,文中的介绍得很详细,而要易于理解和学习,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
这篇文章给大家分享的是PHP策略模式包括哪些,核心代码是什么。小编觉得挺实用的,因此分享给大家做个参考,文中的介绍得很详细,而要易于理解和学习,有需要的朋友可以参考,接下来就跟随小编一起了解看看吧。
 
抽象策略(Strategy)角色:定义所有支持的算法的公共接口。通常是以一个接口或抽象来实现。Context使用这个接口来调用其ConcreteStrategy定义的算法。
 
具体策略(ConcreteStrategy)角色:以Strategy接口实现某具体算法。
 
环境(Context)角色:持有一个Strategy类的引用,用一个ConcreteStrategy对象来配置
 
核心代码
 
  _strategy = $strategy;
 
  }
 
  public function contextInterface() {
 
    $this->_strategy->algorithmInterface();
 
  }
 
}
 
// client
 
$strategyA = new ConcreteStrategyA();
 
$context = new Context($strategyA);
 
$context->contextInterface();
 
$strategyB = new ConcreteStrategyB();
 
$context = new Context($strategyB);
 
$context->contextInterface();
 
$strategyC = new ConcreteStrategyC();
 
$context = new Context($strategyC);
 
$context->contextInterface();
 
其他代码
 
  ";
 
}
 
public function get($key)
 
{
 
return false;
 
}
 
public function set($key,$value)
 
{
 
return true;
 
}
 
public function del($key)
 
{
 
return false;
 
}
 
}
 
// 文件缓存
 
class FileCache implements CacheTable
 
{
 
public function __construct()
 
{
 
echo "Use FileCache
 
";
 
// 文件缓存构造函数
 
}
 
public function get($key)
 
{
 
// 文件缓存的get方法实现
 
}
 
public function set($key,$value)
 
{
 
// 文件缓存的set方法实现
 
}
 
public function del($key)
 
{
 
// 文件缓存的del方法实现
 
}
 
}
 
// TTServer
 
class TTCache implements CacheTable
 
{
 
public function __construct()
 
{
 
echo "Use TTCache
 
";
 
// TTServer缓存构造函数
 
}
 
public function get($key)
 
{
 
// TTServer缓存的get方法实现
 
}
 
public function set($key,$value)
 
{
 
// TTServer缓存的set方法实现
 
}
 
public function del($key)
 
{
 
// TTServer缓存的del方法实现
 
}
 
}
 
// -- 以下是使用不用缓存的策略 ------
 
class Model
 
{
 
private $_cache;
 
public function __construct()
 
{
 
$this->_cache = new NoCache();
 
}
 
public function setCache($cache)
 
{
 
$this->_cache = $cache;
 
}
 
}
 
class UserModel extends Model
 
{
 
}
 
class PorductModel extends Model
 
{
 
public function __construct()
 
{
 
$this->_cache = new TTCache();
 
}
 
}
 
// -- 实例一下 ---
 
$mdlUser = new UserModel();
 
$mdlProduct = new PorductModel();
 
$mdlProduct->setCache(new FileCache()); // 改变缓存策略
 
?>
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!