moco代码赏析九

今天来谈一下目前的代码中是如何使用组合模式的。
以下是matcher部分的类图和组合模式的类图:


未命名文件-2.png

image

Component是组合模式中的接口,它应该包含所有公共的行为,有这样一个接口,方便访问和管理继承这个接口的组件。

Composite是子部件,composite后面还可以有叶子节点,在composite中可以实现子部件应该有的行为。

Leaf是叶子节点,叶子节点是没有子节点的。

根据matcher的类图对比组合模式可以发现,RequestMatcher就是Component,在RequestMatcher中我们有match方法,AndRequestMatcher、OrRequestMatcher是叶子节点,他们分别实现了自己的match方法,AbstractContentMatcher相当于Composite组件,这个类中有自己的doMatch方法是别的类不需要拥有的。再往下的三个类:ContentMatcher、UriRequestMatcher、XPathRequestMatcher在组合模式的这棵树中,都是叶子节点。均继承了AbstractContentMatcher,实现了doMatch方法。很标准的一个组合模式。

组合模式的好处就是可以很清晰的表达出这几个类的部分-整体的组织结构,可以通过对这个组合整体进行统一操作,而忽略对单一的个体进行操作。操作Component和Composite即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容