php設計模式-策略模式


PHP策略模式

1、什么是策略模式?

定義:將一組特定的行為和算法封裝成類,以適應某些特定的上下文環境,並讓它們可以相互替換,這種模式就是策略模式。

簡單理解就是 有n個做法供你選擇,根據你的需要選擇某個策略得到結果

2、為什么要用策略模式?

使用設計模式之后,我們的代碼冗余和耦合度變低,每個策略模塊完成對應的功能

當然缺點就是一個功能我們就要響應制作一個策略類,但是我們統觀MVC架構當中(ThinkPHP,Yii2),一個控制器對應一個視圖,其實也是策略設計模式的體現了。

3、示例代碼

業務場景

在一個電商網站中,根據用戶的性別來展示不同的商品。我們有展示商品的類目(function showCategory())和展示的廣告(function showAd())

實現方式

首先我們要定義一個接口,接口中定義需要實現的方法。

然后分別定義不同的類來實現接口中的方法。

最后在根據用戶的不同,分別 new 不同的方法。

/**
 * @purpose: 父類接口
 * Interface UserInterface
 */
interface UserInterface
{
    /**
     * @purpose: 展示廣告
     * @return mixed
     */
    public function showAd();

    /**
     * @purpose: 展示商品分類
     * @return mixed
     */
    public function showCatetory();
}

/**
 * @purpose: 男性用戶實現用戶接口
 * Class MaleUser
 */
class MaleUser implements UserInterface
{
    /**
     * @purpose: 展示廣告
     * @return mixed
     */
    public function showAd()
    {
        echo "電子產品";
    }

    /**
     * @purpose: 展示商品分類
     * @return mixed
     */
    public function showCatetory()
    {
        echo "電腦數碼";
    }
}

/**
 * @purpose: 女性用戶實現用戶接口
 * Class FemaleUser
 */
class FemaleUser implements UserInterface
{
    /**
     * @purpose: 展示廣告
     * @return mixed
     */
    public function showAd()
    {
        echo "化妝品";
    }

    /**
     * @purpose: 展示商品分類
     * @return mixed
     */
    public function showCatetory()
    {
        echo "服裝分類";
    }
}

if ($_GET['male']){
    $user = new MaleUser();
} else {
    $user = new FemaleUser();
}
$user->showAd();  //會根據用戶的性別展示各自的廣告內容

4、小結

總的來說,我們在開發中的設計原則如下:

  • 找出應用中可能需要變化之處,把它們獨立出來,不要和那些不需要變化的代碼混在一起;
  • 針對接口編程,不針對實現編程;
  • 多用組合,少用繼承。

本文為袋鼠學習中的總結,如有轉載請注明出處:https://www.cnblogs.com/chrdai/p/11184082.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM