工厂模式结合RPC进行多节点数据调用的代码套路
2017-02-20 17:13
288 查看
比如我有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));
相关文章推荐
- 设计模式(2)结合代码和例子来理解简单工厂模式
- 《对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们》的问题的解决方法
- 设计模式(2)结合代码和例子来理解简单工厂模式
- SDI文档模式下调用对话框实现在对话框上绘图操作,并且进行文档和对话框之间的数据传输
- 设计模式之工厂模式结合单例模式C++计算器代码DEMO(历史代码,贴出学习)
- c# “XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
- 类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们的问题的解决方法
- 【C#】对“xxxx::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用。
- 代码重构 - 表驱动和工厂模式结合
- Spring 过滤器、分发器结合实现 只对某种类型数据 在 Ajax调用时候 进行过滤
- CCFlow SDK模式开发(有比较详细的代码,以服务的形式与ccflow数据库进行数据交互)
- CXF之使用工厂方法(java代码)发布服务与进行客户端调用
- 类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们的问题的解决方法 续集
- 懒羊学习《深入浅出设计模式》C#代码手札之工厂模式与抽象工厂
- 设计模式之工厂模式(设计之道代码理解)
- 天气数据调用代码,总结了一下
- 使用objectdatasource结合数据绑定控件进行简单三层架构的开发
- 使用了继承、多态还有工厂模式和反射,但是还是没有OO的感觉。[已经增加了实现的代码]
- 简单工厂模式,抽象工厂模式,反射工厂模式的代码总结
- c#中调用SQLserver的DTS包进行数据的转换