策略的定義就是將一組特定行為和算法封裝成類蛋铆,以適應(yīng)某些特定上下文環(huán)境焚鹊。常見電商網(wǎng)站會針對男女用戶各自跳轉(zhuǎn)不同商品類目、顯示不同廣告位级乍。那么就準(zhǔn)備兩個策略類分別實現(xiàn)相同方法,抽象策略角色
策略模式是一種簡單常見的模式帚湘。作為一個有計謀的模式玫荣,策略就是個墻頭草,見人說人話大诸、見鬼說鬼話捅厂。中學(xué)課文里田忌賽馬的故事,孫子對田忌說:今以君之下駟與彼上駟资柔,取君上駟與彼中駟焙贷,取君中駟與彼下駟。這就體現(xiàn)了一種策略贿堰。
三國演義這本書陪伴了整個苦逼的高中生涯盈厘,桃園結(jié)義、三英戰(zhàn)呂布官边、煮酒論英雄等等故事情節(jié)現(xiàn)在依舊記憶猶新。其中有個章節(jié)諸葛亮三氣周瑜外遇,劉備借荊州一借不還注簿,孫權(quán)為了奪回荊州,周瑜便獻(xiàn)計假意招劉備為東吳女婿借機(jī)扣下作為人質(zhì)跳仿,諸葛亮識破計謀诡渴,于是在劉備去東吳招親之前,特將三個錦囊妙計交給趙云依次解決遇到的問題菲语。這三個妙計分別是:1妄辩、找喬國老幫忙 2、向吳國太求情 3山上、讓孫夫人斷后眼耀。這三個計謀是告訴趙云如何執(zhí)行,具體執(zhí)行什么內(nèi)容佩憾,每個計謀當(dāng)然不同了哮伟,三個妙計應(yīng)該實現(xiàn)的是同一個接口干花,引入策略模式
interface IStrategy
{
/**
* 每個錦囊妙計都是一個可執(zhí)行的算法
*/
public function operate();
}
//三個錦囊實現(xiàn)類
class Qiao implements IStrategy
{
public function operate()
{
// TODO: Implement operate() method.
}
}
class Wu implements IStrategy
{
public function operate()
{
// TODO: Implement operate() method.
}
}
class Sun implements IStrategy
{
public function operate()
{
// TODO: Implement operate() method.
}
}
class Strategy
{
protected $strategy;
function setStrategy(\Common\ExampleOne\IStrategy $strategy)
{
$this->strategy = $strategy;
}
public function operate()
{
$this->operate();
}
}