目录

简单工厂:就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。

示例代码

<?php

namespace DesignPattern;

/**
 * Description of SimpleFactory
 * 简单工厂
 * @author jm
 */
class SimpleFactoryDemo
{
    /**
     * 入口方法
     */
    public static function main(){
        
        $user = ModuleFactory::createModule("user");
        $user->login();
        
        $pay = ModuleFactory::createModule("pay");
        $pay->order();
        $pay->pay();
        
        $share = ModuleFactory::createModule("share");
        $share->share();
        
        $ad = ModuleFactory::createModule("ad");
        $ad->ad();
        
    }
}


/**
 * Module SDK 模块类 父类
 */
class Module
{
    protected  $appid = '';
    protected  $appsecret = '';

    public function set($data)
    {
        $this->appid = $data['appid'];
        $this->appsecret = $data['appsecret'];
    }

}

/**
 * 用户模块
 */
class UserModule extends Module
{
    public function login()
    {
        echo "Login success.".PHP_EOL;
        return "";
    }
}

/**
 * 支付模块
 */
class PayModule extends Module
{
    public function order()
    {
        echo "generate order.".PHP_EOL;
        
        return true;
    } 
    public function pay(){
        echo "pay complete.".PHP_EOL;
        return true;
    }
    
    public function payCallback(){
       echo "pay callback success.".PHP_EOL;
       return true;
    }
}

/**
 * 分享模块
 */
class ShareModule extends Module
{
    public function share()
    {
        echo "share code.".PHP_EOL;
        return true;
    }
}

/**
 * 广告
 */
class AdModule extends Module
{
    public function ad()
    {
        echo "get ad info success.".PHP_EOL;
        return true;
    }
}

/**
 * Module ModuleFactory
 */
class ModuleFactory
{
    public static function createModule($module)
    {
        switch ($module) {
            case 'user':
                $module = new UserModule();
                break;
            case 'pay':
                $module = new PayModule();
                break;
            case 'share':
                $module = new ShareModule();
                break;
            case 'ad':
                $module = new AdModule();
                break;
        }
        return $module;
    }
}

SimpleFactoryDemo::main();


输出:

Login success.
generate order.
pay complete.
share code.
get ad info success.

小结

简单工厂:就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。是一种创建对象的设计模式之一。


本文部分收藏来自互联网,仅用于学习研究,著作权归原作者所有,如有侵权请联系删除

markdown @TsingChan