《PHP編程:PHP策略模式定義與用法示例》要點:
本文介紹了PHP編程:PHP策略模式定義與用法示例,希望對您有用。如果有疑問,可以聯(lián)系我們。
PHP教程本文實例講述了PHP策略模式定義與用法.分享給大家供大家參考,具體如下:
PHP教程概述
PHP教程策略模式屬于對象的行為模式.其用意是針對一組算法,將每個算法封裝到具有共同接口的獨立的類中,從而使得它們可以相互替換.策略模式使得算法可以在不影響到客戶端的情況下發(fā)生變化
PHP教程UML圖
PHP教程
PHP教程策略模式中主要角色
PHP教程這個模式設(shè)計到三個角色:
PHP教程環(huán)境角色(Context):持有一個Strategy的引用
抽象策略(Strategy)角色:這是一個抽象角色,通常由一個接口或抽象類實現(xiàn).此角色給出所有的具體的策略類所需的接口
具體策略(ConcreateStrategy)角色:包裝了相關(guān)的算法或行為
PHP教程使用場景
PHP教程假設(shè)現(xiàn)在要設(shè)計一個購物車系統(tǒng),一個最簡單的情況就是把所有貨品的單價乘上數(shù)量,但是實際情況肯定比這個復(fù)雜.例如:對普通會員無折扣,對中級會員提供8折優(yōu)惠,對高級會員提供7折優(yōu)惠.
PHP教程根據(jù)上述描述,貨品價格是根據(jù)以下幾個算法中的一個進行的:
PHP教程對普通會員無折扣
對中級會員8折
對高級會員7折
PHP教程UML圖
PHP教程
PHP教程實現(xiàn)代碼:
PHP教程
<?php
/**
* 策略抽象類
* @author wzy
*
*/
interface Strategy
{
public function calPrice ($price);
}
/**
* 普通會員策略類
*
* @author wzy
*
*/
class PrimaryStrategy implements Strategy
{
public function calPrice ($price)
{
echo "普通會員無折扣";
return $price;
}
}
/**
* 中級會員策略類
*
* @author wzy
*
*/
class MiddleStrategy implements Strategy
{
public function calPrice ($price)
{
echo "中級會員8折優(yōu)惠";
return $price * 0.8;
}
}
/**
* 高級會員策略類
*
* @author wzy
*
*/
class HighStrategy implements Strategy
{
public function calPrice ($price)
{
echo "高級會員7折優(yōu)惠";
return $price * 0.7;
}
}
/**
* Context實現(xiàn)類
*
* @author wzy
*
*/
class Price
{
/**
* 具體的策略類對象
*
* @var object
*/
private $strategyInstance;
/**
* 構(gòu)造函數(shù),傳入一個具體的策略對象
*
* @param object $instance
*/
public function __construct ($instance)
{
$this->strategyInstance = $instance;
}
/**
* 計算貨品的價格
*
* @param double $price
*/
public function quote ($price)
{
return $this->strategyInstance->calPrice($price);
}
}
/**
* 客戶端操作
*/
$high = new HighStrategy();
$priceClass = new Price($high);
$price = $priceClass->quote(400);
echo $price;
?>
PHP教程回顧策略模式
PHP教程策略模式的重心不是如何實現(xiàn)算法,而是如何組織、調(diào)用這些算法,從而讓程序結(jié)構(gòu)更靈活,具有更好的擴展性和維護性
PHP教程算法的平等性
PHP教程策略模式一個很大的特點就是各個策略算法的平等性.對于一系列具體的策略算法,大家的地位是一樣的,這樣才能實現(xiàn)算法之間的互相轉(zhuǎn)換
PHP教程運行時策略的唯一性
PHP教程運行期間,策略模式在每一個時刻只能使用一個具體的策略實現(xiàn)對象,雖然可以動態(tài)地在不同的策略實現(xiàn)中切換,但是同時只有一個
PHP教程更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《php面向?qū)ο蟪绦蛟O(shè)計入門教程》、《PHP基本語法入門教程》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
PHP教程希望本文所述對大家PHP程序設(shè)計有所幫助.
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.fzlkiss.com/jiaocheng/420.html