moco代码赏析三

今天看的是作者的第三次提交,这次提交并没有添加哪些实质性的功能,而是重构了一些类和方式的命名,以及对现有的项目结构做了一些调整。之前的实现方式依然存在耦合比较多的情况并且命名方式比较模糊,新的实现方式则是创建了两个新的接口RequestMatcher和ResponseHandler,这两个接口分别代表的是输入时参数的匹配器与返回时的结果处理器。从很直观的看,这次改动会让一个从没看过之前代码的人,可以简单的通过代码的架构和类的命名来看懂这些类的作用以及如何使用这个项目。同时,把之前在MocoServer中的两个方法: withContent()和withUri()放在了Moco类中,并重命名。

    public RequestSetting withContent(String requestContent) {
        return new ContentRequestSetting(this, requestContent);
    }

    public RequestSetting withUri(String uri) {
        return new UriRequestSetting(this, uri);
    }
    public static RequestMatcher eqUri(String uri) {
        return new UriRequestMatcher(uri);
    }

    public static RequestMatcher eqContent(String content) {
        return new ContentRequestMatcher(content);
    }

我认为这两个方法确实不应该属于一个服务器类里,暂时放在了这个程序的入口Moco我觉得只是暂时的策略,后期一定会把这两个方法重构在其他地方。


前面提到的RequestMatcher有两个实现类,分别是ContentRequestMatcher类和UriRequestMatcher类,他们替代了前有的RequestSetting实现类。并且作者将之前并没有实现的match中的逻辑实现了,做到了根据匹配Request中的参数来组装他的Response。谈到组装Response,作者在本次提交中,将原有的实现方式(在MocoHandler全部包办),改成了把writeToResponse()方法分离出来写进ResponseHandler的方式,再由ResponseHandler调用不同实现类中的不同的writeContent()方法,这样实现好处在于,我可以根据调用response()方法时,传入的参数不同而采用不同的策略。


这一次的提交,总体给人的感觉就是更加清晰了,无论是项目的结构还是作者的思路,都让我一个局外人看的更加清楚。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,688评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,319评论 25 708
  • 题目1: 如何全局安装一个 node 应用? 如果下载速度比较慢,可以使用淘宝的镜像 install 可以缩写成 ...
    辉夜乀阅读 475评论 0 0
  • 家国堪几代千秋?非汝惑名留。问古乱之由,想必是,君王自求。 丈间闱事,房中快意,安可运国筹。烽火戏诸侯,嬉...
    长安旧人阅读 457评论 1 9
  • 我们的周围不乏变故。 一夜之间,满树的绿叶黄了。一次拥抱,一场感情散了。一句话,一个好友离去了。有时候,你仿佛...
    老丁子阅读 181评论 1 2

友情链接更多精彩内容