模式 策略模式

2021-10-20 08:57:51 字數 1754 閱讀 2644

前言

所有的設計模式都是基於程式設計屆前輩們的不斷實踐得出的解決一類問題中比較有效高效的程式設計方法。

策略模式

策略模式用於解決業務中不同場景下統一行為的細微差別問題。

策略模式遵循 『 開閉原則 』 。

舉個例子來說,在購物車功能中,結算**的時候會根據使用者的不同級別去打折,那麼打折計算**的這一行為就會有不同演算法。此時可以用到策略模式。

策略模式基本思想,uml圖

context : 環境類,維護乙個策略例項

strategy :抽象策略類,定義了共有方法

concretestrategy : 具體的策略實現類

以會員打折為例子

<?php 

#context 環境

#strategy 策略抽象類

#contretestrategy 具體抽象類

#customer 客戶端

/* 決策抽象類 */

inte***ce

strategy

/* 具體決策類 */

class

commoncustomer

implements

strategy

}class

middlecustomer

implements

strategy

}class

highcustomer

implements

strategy

}/* context ,維護乙個策略物件*/

class

price

public

function

quote

($price)}

/* customer 客戶端操作*/

$commoncustomer

=new

commoncustomer()

;$priceclass

=new

price

($commoncustomer);

$price

=$priceclass

->

quote

(100);

echo

$price

;echo''

;$middlecustomer

=new

middlecustomer()

;$priceclass

=new

price

($middlecustomer);

$price

=$priceclass

->

quote

(100);

echo

$price

;echo''

;$highcustomer

=new

highcustomer()

;$priceclass

=new

price

($highcustomer);

$price

=$priceclass

->

quote

(100);

echo

$price

;

設計模式 策略模式

策略模式是一種定義一系列演算法的方法,從概念上來看,所有這些方法完成的都是相同的工作,只是實現不同,他們可以用相同的方式呼叫所有的演算法,減少了演算法類和使用演算法類之間的耦合.優點 策略模式的strategy類層次為context定義了一系列可供重用的演算法和行為,繼承有助於吸取這些演算法中的公共...

設計模式 策略模式

定義了演算法家族,分別封裝起來,讓他們之間可以相互替代,此模式讓演算法的變化,不會影響到使用演算法的客戶端 定義抽象類 分別實現抽象類,不同的物件 然後用乙個類初始化,並傳入具體的策略物件 根據具體的策略物件,呼叫其演算法的方法 客戶端 是由於例項化不同的策略,所以最終在呼叫 類時,所獲得的結果時不...

設計模式 策略模式

設計乙個計算器,有 策略模式的主要思想在於,將所有的可供選擇的演算法封裝,通過乙個統一的容器傳入予以呼叫。比如 我有乙個計算用的介面,往裡面插入計算器,計算器中有加法器 減法器等等,這些就是策略,我把策略包裝好,放入計算器進行呼叫,計算器再插入介面即可。因此基於該模式的 應如下 計算介面 inte ...