<?php
/** * 定義策略介面
* * inte***ce strategy
*/inte***ce strategy
/** * 加法類
* * class addition
*/class addition implements strategy
}/**
* 減法類
* * class subtraction
*/class subtraction implements strategy
}/**
* 上下文(環境)
* * class content
*/class context // 3.結束,出去了
public function contextinte***ce($numa, $numb)
}/**
* 客戶端呼叫
*/$addobj = new addition();
$addcontext = new context($addobj); // 0.例項化context,傳入addition類(加法)
/** * 4.此時,頁面還沒有結束,你new了context,它仍然存在。
* 呼叫contextinte***ce時,其實就是$addobj->contextinte***ce
* contextinte***ce並不存在於addition類中(加法),但你通過context呼叫了自身的operation方法
*/var_dump($addcontext->contextinte***ce('1', '1'));
$subobj = new subtraction();
$subcontext = new context($subobj);
var_dump($subcontext->contextinte***ce('2', '1'));
策略模式的優點:
策略模式的缺點:
策略模式的適用場景:
當乙個系統需要動態地在幾種演算法中選擇一種時。
php 設計模式(策略模式)
策略模式是將一組特定的行為和演算法封裝成類,以適應某些特定的上下文環境,這就是策略模式 電商類 針對男生和女生要跳到不同的商品類目,並且所有廣告位展示不同的廣告 中會出現 if男生 if女生 硬編碼 當需求改變時所有 都需要改變,這種情況就需要使用 策略模式因為策略模式 跟上下文的環境是中立的沒有依...
PHP設計模式 策略模式
其實就是同一方法的不同實現,類似於重寫。和工廠模式有一樣的效果,但是策略模式更注重方法的重寫,尤其是一種方法。工廠模式更注重類的不同,直接導致很多方法的不一樣。abstract class baseagent 用於客戶端是ie時呼叫的類 環境角色 class ieagent extends base...
設計模式(三) 策略模式
策略模式的結構圖 引用 模版方法模式,對照類圖可以看到,策略模式與模版方法模式的區別僅僅是多了乙個單獨的封裝類context,它與模版方法模式的區別在於 在模版方法模式中,呼叫演算法的主體在抽象的父類中,而在策略模式中,呼叫演算法的主體則是封裝到了封裝類context中,抽象策略strategy一般...