moco代码赏析九

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


moco代码赏析九_第1张图片
未命名文件-2.png

moco代码赏析九_第2张图片
image

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

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

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

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

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

你可能感兴趣的:(moco代码赏析九)