比如我有2个业务类:GameNews和SportsNews。
这我们网站的2个频道,这2个频道很可能都是不同团队来开发维护的。
代码示例:
<?php
class SportsNews
{
static function loadNews($id)
{
return ['news_id'=>$id,'news_title'=>'体育新闻','news_time'=>'2017-02-20'];
}
}
这个时候如果我们做一个子频道就开发一套代码,最后我们的代码会越来越乱。
我就需要通过设计模式把代码弄成同一套,但是最后调用出来的数据不通过。
现在我们就来利用简单的工厂设计模式,把远程调用RPC代码整合。
NewsFactory.php
<?php
//引入我们的2个业务类
require_once './classes/SportsNews.php';
require_once './classes/GameNews.php';
require_once 'RpcClient.php';
class NewsFactory
{
static function instance($name,$remote=false)
{
if ($remote){
RpcClient::config($remote);
RpcClient::instance($name);
}
if ($name == 'GameNews'){
return GameNews;
}elseif ($name == 'SportsNews'){
return SportsNews;
}
}
}
客户端通过工厂方法统一调用:
require_once 'NewsFactory.php';
$obj = NewsFactory::instance('GameNews');
var_export($obj->loadNews(123));