設計模式-策略模式-例子1

本文例子來自鹿鼎記的韋小寶
他是一個八面玲瓏的人,是一個有策略的人,因此才能在本身不一樣的角色轉換自如,符合這個設計模式php

對應於策略設計模式
Context(使用者): 韋小寶
Abstract(抽象策略) : 轉換角色
Strategy(具體策略) : 遇到了康熙,遇到了天地會,遇到了神龍教,分別是什麼角色設計模式


代碼實現測試

抽象策略ui

/**
 * 身份抽象類
 * Interface IDEGREE
 */

interface IDegree
{
    public function role();
}

使用者類設計

/**
 * 使用角色
 * Class Weixiaobao
 */

class Wxb
{
    public function role(IDegree $degree){
        $degree->role();
    }
}

具體策略類code

/**
 * 遇到康熙的身份
 * Class Kangxi
 */
include "IDegree.php";

class Kangxi implements IDegree
{

    public function role()
    {
        echo '遇到了康熙,變成小桂子';
    }
}
/**
 * 遇到了天地會
 * Class Tiandihui
 */

include "IDegree.php";

class Tiandihui implements IDegree
{

    public function role()
    {
        echo '遇到了天地會, 我是韋香主';
    }
}
/**
 * 碰見了神龍教
 * Class Shenlongjiao
 */

include "IDegree.php";

class Shenlongjiao implements IDegree
{
    public function role()
    {
        echo '遇到了神龍教, 我是白龍使';
    }

}

測試io

/**
 * 行走江湖都不怕的韋小寶
 */

include_once "Wxb.php";
//include_once "Shenlongjiao.php";
include_once "Tiandihui.php";

$wxb = new Wxb();

//皇上派人去攻打神龍教
//$wxb->role(new Shenlongjiao());

$wxb->role(new Tiandihui());
相關文章
相關標籤/搜索