php 策略类模式

应用场景:对外提供一个接口,在不改成接口基础上,通过改变环境类来实现不同调用方法
如选择不同支付方式,抽奖机率
<?php
//定义一个抽象策略类,他的主要目的就是规范一个必须要实现的方法,环境类依赖这个接口进行编程
interface Message
{
public function send();
}

//定义多种算法类
class BaiduYunMessage implements Message
{
function send()
{
echo '百度云发送信息!';
}
}

class AliYunMessage implements Message
{
public function send()
{
echo '阿里云发送信息!';
}
}

class JiguangMessage implements Message
{
public function send()
{
echo '极光发送信息!';
}
}

//提供给客户一个稳定的类,控制权都在这个调用类里边,由它来决定到底采用哪种算法
class MessageContext
{
private $message;
public function __construct(Message $msg)
{
$this->message = $msg;
}
public function SendMessage()
{
$this->message->send();
}
}

$bdMsg = new BaiduYunMessage();
$msgCtx = new MessageContext($bdMsg);
$msgCtx->SendMessage();

$alMsg = new AliYunMessage();
$msgCtx = new MessageContext($alMsg);
$msgCtx->SendMessage();

$jgMsg = new JiguangMessage();
$msgCtx = new MessageContext($jgMsg);
$msgCtx->SendMessage();
posted @ 2020-07-31 18:04  快乐的在一起  阅读(180)  评论(0编辑  收藏  举报