1. 程式人生 > 實用技巧 >php 策略類模式

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