08-简单工厂模式
目录
简单工厂:就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。
示例代码
<?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 9ong@TsingChan