您的位置:首页 > 数据库 > Memcache

Memcache-Java-Client-Release源码阅读(之一)

2016-04-13 22:59 951 查看
写在前面的话

使用到的开源框架,还是会抽点时间看看源码,个人喜欢的方式是先看源码整体结构,然后再跟着源码一步一步的单步调试,边运行边了解,逐步对比框架介绍中提及的功能特性,研究研究他是怎么实现各种特性的,虽然有很多地方看不太懂,但不影响阅读代码的乐趣。

一、下载

在github网站能下到发布的源码,作者是gwhalin,选择Tags标记版本,这才是第一手的资料,找最新的2.6.1,下载地址为:

https://github.com/gwhalin/Memcached-Java-Client/archive/release_2.6.1.zip

二、整体阅读

首先需要大致了解一下源码的结构,所有的UML类图放在一起,会比较大,所以根据类的耦合程度,简单地拆分成5部分进行主要的UML图绘制(拆分的时候其实没有严格的原则,仅凭个人感觉)。为了简洁显示,裁剪了类中的许多重载方法和成员变量 。

1、先看一下最核心的SockIOPOOL类和Client类



2、内部类SockIO的相关类

主要负责网络通信部分数据的发送、接收,如下UML所示:



3、两个工厂类

主要目的是创建SockIO连接对象,Memcached新特性SASL认证的相关代码也是在这里实现的,如下UML所示:



4、自定义序列化和反序列化相关类的UML结构,支持基本类型的转换和POJO的序列化,反序列化操作,如下UML所示:



5、Command类

这些类其实只在AscIIUDPClient类中有使用到,AscIITCPClient类都是使用StringBuilder完成命令的拼接的,这些Command类也不算是遵循命令设计模式,只是类名后面带了Command字样而已,并且在使用过程中违反依赖倒置原则和里氏替换原则,好在这部分也不是很关键的部分,看看就好了。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息