PHP设计模式之简单工厂模式

作者:南丞 时间:2018-02-15 15:00

简单工厂模式

<?php
//应用场景:数据库链接操作,对象操作是唯一操作的时候
header("Content-type: text/html; charset=utf-8");

/**
 *  接口  技能设定
 */
interface IProduct
{
    public function Attack();//攻击

    public function Defense();// 防御
}

/**
 * 创建  - 步兵
 */
class XPinfantry implements IProduct
{
    public function Attack()
    {
        echo '步兵进攻,攻击力10~<br>';
    }

    public function Defense()
    {
        echo '步兵防守,防御力:20~ <br/>';
    }

}

/**
 * 创建 - 骑兵
 */
class XPcavalry implements IProduct
{
    public function Attack()
    {
        echo '骑兵进攻,攻击力:30~ <br/>';
    }

    public function Defense()
    {
        echo '骑兵防守,防御力:5~ <br/>';
    }
}

/**
 * 工厂角色
 */
class  ProductFactory
{
    public static function GetInstance($style)
    {
        switch ($style) {
            case 1:  //创建步兵
                return new XPcavalry();
                break;
            case 2: //创建骑兵
                return new  XPcavalry();
                break;
            default:
                return null;
        }
    }
}

$obj  = [];
$obj[] = ProductFactory::GetInstance(1); // 生产一个步兵
$obj[] = ProductFactory::GetInstance(2); // 生产一个骑兵
$obj[] = ProductFactory::GetInstance(3); // 生产错了
$obj[] = ProductFactory::GetInstance(2); // 生产一个骑兵
foreach ($obj as $val) {
    if ($val) {
        $val->Attack();  // 进攻
        $val->Defense(); // 防守
    } else {
        echo '暂无该类兵种!<br/>';
    }
}

评论:

回到顶部
回到顶部