欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP策略模式定義與用法示例

 更新時(shí)間:2017年07月27日 09:07:54   作者:低調(diào)小一  
這篇文章主要介紹了PHP策略模式定義與用法,結(jié)合實(shí)例形式簡(jiǎn)單分析了php策略模式的原理、實(shí)現(xiàn)與使用方法,需要的朋友可以參考下

本文實(shí)例講述了PHP策略模式定義與用法。分享給大家供大家參考,具體如下:

概述

策略模式屬于對(duì)象的行為模式。其用意是針對(duì)一組算法,將每個(gè)算法封裝到具有共同接口的獨(dú)立的類(lèi)中,從而使得它們可以相互替換。策略模式使得算法可以在不影響到客戶(hù)端的情況下發(fā)生變化

UML圖

策略模式中主要角色

這個(gè)模式設(shè)計(jì)到三個(gè)角色:

環(huán)境角色(Context):持有一個(gè)Strategy的引用
抽象策略(Strategy)角色:這是一個(gè)抽象角色,通常由一個(gè)接口或抽象類(lèi)實(shí)現(xiàn)。此角色給出所有的具體的策略類(lèi)所需的接口
具體策略(ConcreateStrategy)角色:包裝了相關(guān)的算法或行為

使用場(chǎng)景

假設(shè)現(xiàn)在要設(shè)計(jì)一個(gè)購(gòu)物車(chē)系統(tǒng),一個(gè)最簡(jiǎn)單的情況就是把所有貨品的單價(jià)乘上數(shù)量,但是實(shí)際情況肯定比這個(gè)復(fù)雜。例如:對(duì)普通會(huì)員無(wú)折扣,對(duì)中級(jí)會(huì)員提供8折優(yōu)惠,對(duì)高級(jí)會(huì)員提供7折優(yōu)惠。

根據(jù)上述描述,貨品價(jià)格是根據(jù)以下幾個(gè)算法中的一個(gè)進(jìn)行的:

對(duì)普通會(huì)員無(wú)折扣
對(duì)中級(jí)會(huì)員8折
對(duì)高級(jí)會(huì)員7折

UML圖

實(shí)現(xiàn)代碼:

<?php
/**
 * 策略抽象類(lèi)
 * @author wzy
 *
 */
interface Strategy
{
  public function calPrice ($price);
}
/**
 * 普通會(huì)員策略類(lèi)
 *
 * @author wzy
 *
 */
class PrimaryStrategy implements Strategy
{
  public function calPrice ($price)
  {
    echo "普通會(huì)員無(wú)折扣";
    return $price;
  }
}
/**
 * 中級(jí)會(huì)員策略類(lèi)
 *
 * @author wzy
 *
 */
class MiddleStrategy implements Strategy
{
  public function calPrice ($price)
  {
    echo "中級(jí)會(huì)員8折優(yōu)惠";
    return $price * 0.8;
  }
}
/**
 * 高級(jí)會(huì)員策略類(lèi)
 *
 * @author wzy
 *
 */
class HighStrategy implements Strategy
{
  public function calPrice ($price)
  {
    echo "高級(jí)會(huì)員7折優(yōu)惠";
    return $price * 0.7;
  }
}
/**
 * Context實(shí)現(xiàn)類(lèi)
 *
 * @author wzy
 *
 */
class Price
{
  /**
   * 具體的策略類(lèi)對(duì)象
   *
   * @var object
   */
  private $strategyInstance;
  /**
   * 構(gòu)造函數(shù),傳入一個(gè)具體的策略對(duì)象
   *
   * @param object $instance
   */
  public function __construct ($instance)
  {
    $this->strategyInstance = $instance;
  }
  /**
   * 計(jì)算貨品的價(jià)格
   *
   * @param double $price
   */
  public function quote ($price)
  {
    return $this->strategyInstance->calPrice($price);
  }
}
/**
 * 客戶(hù)端操作
 */
$high = new HighStrategy();
$priceClass = new Price($high);
$price = $priceClass->quote(400);
echo $price;
?>

回顧策略模式

策略模式的重心不是如何實(shí)現(xiàn)算法,而是如何組織、調(diào)用這些算法,從而讓程序結(jié)構(gòu)更靈活,具有更好的擴(kuò)展性和維護(hù)性

算法的平等性

策略模式一個(gè)很大的特點(diǎn)就是各個(gè)策略算法的平等性。對(duì)于一系列具體的策略算法,大家的地位是一樣的,這樣才能實(shí)現(xiàn)算法之間的互相轉(zhuǎn)換

運(yùn)行時(shí)策略的唯一性

運(yùn)行期間,策略模式在每一個(gè)時(shí)刻只能使用一個(gè)具體的策略實(shí)現(xiàn)對(duì)象,雖然可以動(dòng)態(tài)地在不同的策略實(shí)現(xiàn)中切換,但是同時(shí)只有一個(gè)

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門(mén)教程》、《PHP基本語(yǔ)法入門(mén)教程》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門(mén)教程》及《php常見(jiàn)數(shù)據(jù)庫(kù)操作技巧匯總

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • php 判斷訪(fǎng)客是否為搜索引擎蜘蛛的函數(shù)代碼

    php 判斷訪(fǎng)客是否為搜索引擎蜘蛛的函數(shù)代碼

    php 判斷訪(fǎng)客是否為搜索引擎蜘蛛的函數(shù)代碼。需要的朋友可以參考下。
    2011-07-07
  • 初級(jí)的用php寫(xiě)的采集程序

    初級(jí)的用php寫(xiě)的采集程序

    這篇文章主要介紹了初級(jí)的用php寫(xiě)的采集程序
    2007-03-03
  • PHP中使用數(shù)組實(shí)現(xiàn)堆棧數(shù)據(jù)結(jié)構(gòu)的代碼

    PHP中使用數(shù)組實(shí)現(xiàn)堆棧數(shù)據(jù)結(jié)構(gòu)的代碼

    堆棧是一種數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)形式,是廣泛用來(lái)存取數(shù)據(jù)的一種容器
    2012-02-02
  • 基于PHP一些十分嚴(yán)重的缺陷詳解

    基于PHP一些十分嚴(yán)重的缺陷詳解

    本篇文章是對(duì)PHP中一些十分嚴(yán)重的缺陷進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • php的ajax框架xajax入門(mén)與試用介紹

    php的ajax框架xajax入門(mén)與試用介紹

    xajax功能很簡(jiǎn)單,但很靈活!~它不象其它一些大的框架,功能確實(shí)強(qiáng)大,但執(zhí)行速度不敢恭維。。功能雖多,但不夠靈活。api多,學(xué)起來(lái)簡(jiǎn)直如同學(xué)習(xí)一門(mén)新的語(yǔ)言。
    2010-12-12
  • 解析php dirname()與__FILE__常量的應(yīng)用

    解析php dirname()與__FILE__常量的應(yīng)用

    本篇文章是對(duì)php中的dirname()與__FILE__常量的應(yīng)用進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • linux下php上傳文件注意事項(xiàng)

    linux下php上傳文件注意事項(xiàng)

    這篇文章主要為大家詳細(xì)介紹了linux下php上傳文件注意事項(xiàng),希望對(duì)大家安裝php有所幫助,感興趣的朋友可以參考一下
    2016-06-06
  • 部署PHP時(shí)的4個(gè)配置修改說(shuō)明

    部署PHP時(shí)的4個(gè)配置修改說(shuō)明

    這篇文章主要介紹了部署PHP時(shí)的4個(gè)配置修改說(shuō)明,非常重要的四點(diǎn)配置修改,希望大家認(rèn)真閱讀本文。
    2015-10-10
  • 最新評(píng)論