写在前面的话
使用到的开源框架,还是会抽点时间看看源码,个人喜欢的方式是先看源码整体结构,然后再跟着源码一步一步的单步调试,边运行边了解,逐步对比框架介绍中提及的功能特性,研究研究他是怎么实现各种特性的,虽然有很多地方看不太懂,但不影响阅读代码的乐趣。
一、下载
在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字样而已,并且在使用过程中违反依赖倒置原则和里氏替换原则,好在这部分也不是很关键的部分,看看就好了。