設計模式PHP版三 策略模式

2021-09-14 05:09:43 字數 1086 閱讀 1904

<?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一般...