设计模式之代理模式之读写分离!!!

小伙伴们你们的小可爱逗比又上线了!!!

最近感觉带表情的文章看多了,写篇文章不放上几十个表情感觉自己都写不出来什么!!!原谅你们的小可爱放荡。。。不羁。。。爱谁谁!!!

好了好了,开始上课了,今天你们的刘老师要讲的内容是?对对对!!!最后面那个同学说的对,就是设计模式之代理模式额外加读写分离设计!下课别走啊,刚才哪位同学!!!

代理这个词,相信很多同学应该不陌生了吧!

1、从非程序来说,代理生活中最常见的就是朋友圈刷屏的各种商品等等。

2、从服务器架构上来说,代理就是转发,好比你和第三者之间需要沟通,但是你还不能直接和他交流,你要靠别人帮你带话,这种中间人就是代理了!

3、从设计模式来说和以上两种类似也就是相等于中间件,然后通过rpc从代理上获取数据

首先我们我们梳理一下使用代理模式做读写分离的步骤

1)接口类必须(统一规范)

首先我们要定义一个接口文件

interface IProxy
{
    function getThing($id);
    function setThing($id, $name);
}

这样做的目的就是统一规划,按照面向对象编程规范去做!

《PHP面向对象编程规范》

2)实现接口方法

class Proxy implements IProxy
{
   //如果是读操作就用连接从数据库
   public function getThing($id)
    {
        $db = Factory::getDatabase('slave');  //工厂模式封装(后面讲)
        $db->query("select name from user where id =$id limit 1");
    }
    //如果是写操作就连接主数据库
 public function setThing($id, $name)
    {
        $db = Factory::getDatabase('master');  //工厂模式封装(后面讲)
        $db->query("update user set name = $name where id =$id limit 1");
    }
}

这样呢简单的就实现了代理模式的数据读写分离的操作!当然这只是对莫一个模型的操作,小伙伴们可以自行封装多个模型,只要严格按照面向对象编程规范就可以了!

原文发布于微信公众号 - 思梦PHP(sm_php)

原文发表时间:2017-11-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序你好

用Spring Boot颠覆Java应用开发

772
来自专栏IT大咖说

送给前端的你:可视化快速生成模拟数据服务——Easy Mock

? 内容来源:2017年11月18日,大搜车前端工程师高攀在“2017中国开源年会”进行《Easy Mock 接口数据模拟服务》演讲分享。IT 大咖说(微信i...

3716
来自专栏程序员互动联盟

【专业技术第十一讲】Eclipse和myeclipse区别

存在问题: 初学java环境配置这个Eclipse和MyEclipse分不清?十分不解 解决方案: Eclipse 是一个开放源代码的、基于Java的可扩展开发...

50411
来自专栏LIN_ZONE

php框架中,try,catch不能用的问题(转载)

本文转自:http://blog.csdn.net/sangjinchao/article/details/71436557

472
来自专栏Java帮帮-微信公众号-技术文章全总结

Java和PHP在Web开发方面的比较

比较PHP和JSP这两个Web开发技术,在目前的情况是其实是比较PHP和Java的Web开发。以下是我就几个主要方面进行的比较: 一、 语言比较   PHP是...

2964
来自专栏魏琼东

重写AgileEAS.NET SOA 中间件平台账号密码的加密算法

     AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平...

670
来自专栏魏琼东

重写AgileEAS.NET SOA 中间件平台账号密码的加密算法

一、平台简介      AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个...

1877
来自专栏EAWorld

浅谈BDD下的自动化测试框架

测试驱动开发(TDD)相信大家已经很熟悉了,而行为驱动开发(BDD)其实是TDD的一种演化。那什么是BDD,为什么要使用BDD, BDD下的自动化测试该如何做呢...

531
来自专栏java一日一条

Spring 测试:其实很简单

在过去的职业生涯里,我经常发现有些人不写测试代码,而他们声称不写的理由是无法轻易地写出覆盖多个不同模块的测试用例。好吧,我相信他们中的大部分要么是缺乏一些比较易...

822
来自专栏大内老A

《EnterLib PIAB深入剖析》系列博文汇总

Policy Injection Application Block(PIAB)是Enterprise Library众多Application Block中的...

1686

扫码关注云+社区