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

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

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

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

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

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 条评论
登录 后参与评论

相关文章

来自专栏我和未来有约会

Kit 3D 更新

Kit3D is a 3D graphics engine written for Microsoft Silverlight. Kit3D was inita...

2596
来自专栏Ceph对象存储方案

Luminous版本PG 分布调优

Luminous版本开始新增的balancer模块在PG分布优化方面效果非常明显,操作也非常简便,强烈推荐各位在集群上线之前进行这一操作,能够极大的提升整个集群...

3215
来自专栏pangguoming

Spring Boot集成JasperReports生成PDF文档

由于工作需要,要实现后端根据模板动态填充数据生成PDF文档,通过技术选型,使用Ireport5.6来设计模板,结合JasperReports5.6工具库来调用渲...

1.2K7
来自专栏一个爱瞎折腾的程序猿

sqlserver使用存储过程跟踪SQL

USE [master] GO /****** Object: StoredProcedure [dbo].[sp_perfworkload_trace_s...

2110
来自专栏张善友的专栏

Silverlight + Model-View-ViewModel (MVVM)

     早在2005年,John Gossman写了一篇关于Model-View-ViewModel模式的博文,这种模式被他所在的微软的项目组用来创建Expr...

3008
来自专栏杨龙飞前端

scrollto 到指定位置

2544
来自专栏落花落雨不落叶

canvas画简单电路图

64411
来自专栏转载gongluck的CSDN博客

cocos2dx 打灰机

#include "GamePlane.h" #include "PlaneSprite.h" #include "BulletNode.h" #include...

5616
来自专栏大内老A

The .NET of Tomorrow

Ed Charbeneau(http://developer.telerik.com/featured/the-net-of-tomorrow/) Exciti...

32110
来自专栏闻道于事

js登录滑动验证,不滑动无法登陆

js的判断这里是根据滑块的位置进行判断,应该是用一个flag判断 <%@ page language="java" contentType="text/html...

7058

扫码关注云+社区