工厂模式结合RPC进行多节点数据调用的代码套路

来源:互联网 发布:格雷厄姆格林知乎 编辑:程序博客网 时间:2024/06/07 20:04

这里写图片描述

比如我有2个业务类:GameNews和SportsNews。
这我们网站的2个频道,这2个频道很可能都是不同团队来开发维护的。

代码示例:

<?phpclass 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));
0 0