0

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

你会怎么做?访问者模式在这里有什么帮助吗?如果是这样,我该如何使用它?

谢谢

4

1 回答 1

0

一些意见/建议

  • 不确定访客模式是否适合这里。访问者模式的典型场景是操作算法根据应用算法的对象而有所不同。
  • 解决这个问题的粗略方法是将算法嵌入到相关对象本身中,但这相当于混合数据和操作(违背关注点分离的精神
  • 访问者模式在这里帮助我们将算法与其应用的数据区分开来。
  • 查看示例以更好地理解访问者模式。

在你的情况下

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

对于你的问题,

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

根据您的要求,这里的TagInfo课程将是一个 pojo。

该类是无状态的,可以用作singleton. 或者,您可以将构造函数设为私有,并将方法设为静态。

一旦你有了这个,你就可以调用来获取链接,然后循环通过链接列表来通过调用方法parseLinks从每个链接中获取标签信息。extractTageInfo

于 2013-05-23T16:09:15.627 回答