从java中的xhtml收集信息:parser + visitor?

时间:2013-05-23 14:53:11

标签: java design-patterns xhtml visitor-pattern

我必须编写一段代码来加载远程网页,搜索链接,访问这些页面并从某些标签中收集一些信息......

你会怎么做?访客模式是否有任何帮助?如果是这样,我怎么能用它?

由于

1 个答案:

答案 0 :(得分:0)

一些意见/建议

  • 不确定访客模式是否适合这里。访问者模式的典型场景是操作算法根据应用算法的对象而不同。
  • 解决这个问题的粗略方法是将算法嵌入相关的对象本身,但这相当于混合数据和操作(违背分离关注的精神
  • 访问者模式帮助我们将算法与其应用的数据分开。
  • check out an example以便更好地了解访客模式。

在你的情况下

  • 对象网页链接操作 访问解析提取信息
  • 相同操作集应用于所有网页和链接。
  • 所以这里的操作算法不会因不同的网页和链接而改变,因此访客模式不合适。
  • 从技术上讲,你仍然可以使用访客模式,但这不是它的用途。

对于你的问题,

  • 我认为它不是很复杂的设计问题。某些模式似乎可以解决问题,例如Command Pattern(命令:extractLinkFromPagevisitLinkAndParseTags),但IMO,对于这个简单的问题,它将 overkill
  • 我建议一种在实用程序类中托管逻辑并在调用程序中使用相同逻辑的简单方法,
 class WebUtility{
 public List<String> parseLinks(String remotePageAddress){
 //Parse links
 }   
 public TageInfo extractTageInfo(String pageURL){
 //Extract the Tag information 
 }
 }

根据您的要求,TagInfo类将成为一个pojo。

此类是无状态的,可以用作singleton(可选)可以使构造函数为private,方法为static。

完成此操作后,您可以调用parseLinks获取链接,然后循环链接列表,通过调用extractTageInfo方法从每个链接获取标记信息。