婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁(yè) > 知識(shí)庫(kù) > php設(shè)計(jì)模式之策略模式應(yīng)用案例詳解

php設(shè)計(jì)模式之策略模式應(yīng)用案例詳解

熱門標(biāo)簽:開(kāi)發(fā)地圖標(biāo)注類網(wǎng)站 外呼系統(tǒng)能給企業(yè)帶來(lái)哪些好處 咸寧銷售電銷機(jī)器人系統(tǒng) 廣東廣州在怎么申請(qǐng)400電話 電銷機(jī)器人問(wèn)門薩維品牌my 余姚電話機(jī)器人 400電話蘭州申請(qǐng)請(qǐng) 百度地圖標(biāo)注偏差 百度地圖怎樣標(biāo)注圖標(biāo)

本文實(shí)例講述了php設(shè)計(jì)模式之策略模式應(yīng)用。分享給大家供大家參考,具體如下:

策略模式

定義:

策略模式定義一系列的算法,將每個(gè)算法封裝起來(lái),并讓它們可以相互裝換。策略模式讓算法獨(dú)立于使用它的客戶而獨(dú)立變化。

角色分析:

  1. 抽象策略角色:策略類,通常由一個(gè)接口或者抽象類實(shí)現(xiàn);
  2. 具體策略角色:包裝了相關(guān)的算法和行為;
  3. 環(huán)境角色:持有一個(gè)策略類的引用,最終給客戶端用。

應(yīng)用場(chǎng)景:

  1. 多個(gè)類只區(qū)別在表現(xiàn)行為不同,可以使用策略模式,在運(yùn)行的時(shí)動(dòng)態(tài)選擇具體要執(zhí)行的行為。
  2. 需要在不同情況下使用不同的策略(算法) ,或者策略還可能在未來(lái)用其他方式來(lái)實(shí)現(xiàn)。
  3. 對(duì)客戶隱藏具策略(算法)的實(shí)現(xiàn)細(xì)節(jié),彼此完全獨(dú)立。

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

?php
/**
 * Created by PhpStorm.
 * Author: zhaorui
 * Date: 2019/2/27
 * Time: 10:55
 */
header('Content-Type:text/html;charset=utf-8');
// 抽象策略接口
abstract class Strategy{
  abstract function wayToSchool();
}
//具體策略角色
class BikeStrategy extends Strategy{
  function wayToSchool()
  {
    echo "騎自行車去上學(xué)".PHP_EOL;
  }
}
class BusStrategy extends Strategy{
  function wayToSchool()
  {
    echo "乘公共汽車去上學(xué)".PHP_EOL;
  }
}
class TaxiStrategy extends Strategy{
  function wayToSchool()
  {
    echo "坐出租去上學(xué)".PHP_EOL;
  }
}
// 環(huán)境角色
class Context{
  private $strategy;
  function getStrategy($strategyName){
    try{
      $strategyReflection = new ReflectionClass($strategyName);
      $this->strategy = $strategyReflection->newInstance();
    }catch (ReflectionException $e){
      $this->strategy = "";
    }
  }
  function goToSchool(){
    $this->strategy->wayToSchool();
  }
}
// 測(cè)試
$context  = new Context();
$context->getStrategy('BusStrategy');
$context->goToSchool();

運(yùn)行結(jié)果

乘公共汽車去上學(xué)

優(yōu)點(diǎn):

  1. 策略模式提供了管理相關(guān)的算法族的辦法。策略類的等級(jí)結(jié)構(gòu)定義了一個(gè)算法或行為族。恰當(dāng)使用繼承可以把公共的代碼轉(zhuǎn)移到父類里面,從而避免重復(fù)的代碼。
  2. 策略模式提供了可以替換繼承關(guān)系的辦法。繼承可以處理多種算法或行為。如果不是用策略模式,那么使用算法或行為的環(huán)境類就可能會(huì)有一些子類,每一個(gè)子類提供不同的算法或行為。但是,這樣一來(lái)算法或行為的使用者就和算法或行為本身混在一起。決定使用哪一種算法或采取哪一種行為的邏輯就和算法或行為的邏輯混在一起,從而不可能再獨(dú)立演化。繼承使得動(dòng)態(tài)改變算法或行為變得不可能。
  3. 使用策略模式可以避免使用多重條件轉(zhuǎn)移語(yǔ)句。多重轉(zhuǎn)移語(yǔ)句不易維護(hù),它把采取哪一種算法或采取哪一種行為的邏輯與算法或行為邏輯混合在一起,統(tǒng)統(tǒng)列在一個(gè)多重轉(zhuǎn)移語(yǔ)句里面,比使用繼承的辦法還要原始和落后。

缺點(diǎn):

  1. 客戶端必須知道所有的策略類,并自行決定使用哪一個(gè)策略類。這就意味著客戶端必須理解這些算法的區(qū)別,以便適時(shí)選擇恰當(dāng)?shù)乃惴?。換而言之,策略模式只適用于客戶端知道的所有的算法或行為的情況。
  2. 策略模式造成很多的策略類,每個(gè)具體策略類都會(huì)產(chǎn)生一個(gè)新類。有時(shí)候可以通過(guò)把依賴于環(huán)境的狀態(tài)保存到客戶端里面,而將策略類設(shè)計(jì)成共享的,這樣策略類實(shí)例可以被不同客戶端使用。換而言之,可以使用享元模式來(lái)減少對(duì)象的數(shù)量。

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

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

您可能感興趣的文章:
  • php設(shè)計(jì)模式 Strategy(策略模式)
  • 學(xué)習(xí)php設(shè)計(jì)模式 php實(shí)現(xiàn)策略模式(strategy)
  • PHP設(shè)計(jì)模式之策略模式(Strategy)入門與應(yīng)用案例詳解
  • PHP設(shè)計(jì)模式之策略模式原理與用法實(shí)例分析
  • php設(shè)計(jì)模式之策略模式實(shí)例分析【星際爭(zhēng)霸游戲案例】
  • PHP實(shí)現(xiàn)的策略模式簡(jiǎn)單示例
  • PHP策略模式定義與用法示例
  • PHP設(shè)計(jì)模式之觀察者模式(Observer)詳細(xì)介紹和代碼實(shí)例
  • php設(shè)計(jì)模式 Template (模板模式)
  • PHP常用的三種設(shè)計(jì)模式匯總
  • php設(shè)計(jì)模式 Proxy (代理模式)
  • PHP設(shè)計(jì)模式之 策略模式Strategy詳解【對(duì)象行為型】

標(biāo)簽:鷹潭 重慶 麗江 衡陽(yáng) 巴彥淖爾 銅陵 臨沂 十堰

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《php設(shè)計(jì)模式之策略模式應(yīng)用案例詳解》,本文關(guān)鍵詞  php,設(shè)計(jì)模式,之,策略,模式,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《php設(shè)計(jì)模式之策略模式應(yīng)用案例詳解》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于php設(shè)計(jì)模式之策略模式應(yīng)用案例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 凤山县| 巴青县| 乐昌市| 偏关县| 霍邱县| 栾川县| 江城| 贺兰县| 改则县| 平乐县| 慈利县| 西乌珠穆沁旗| 洪洞县| 闽侯县| 淳化县| 馆陶县| 宜昌市| 英吉沙县| 乌兰察布市| 嘉鱼县| 来宾市| 黄梅县| 桃江县| 昔阳县| 措美县| 洛浦县| 南宫市| 志丹县| 康平县| 江川县| 彰化市| 军事| 和林格尔县| 班戈县| 峨山| 丰都县| 伊宁县| 安泽县| 延寿县| 南漳县| 曲阳县|