我在想这个问题上有点困难,所以如果你能帮忙的话那就太好了。
我已经编写了一些代码,可以从站点Map中获取URL列表。然后我去每一页,刮掉所有的链接,然后测试它们的状态(200404,等等)。
我正在使用httpclient。我觉得一切正常,但由于我是java新手,我认为我的代码完全是一个黑客/迷宫,如果组织得当,我很可能获得更好的性能。所以我要说的是
main类-构建gui
解析sitemap类-解析sitemap并获取url列表。
类称为pingurl-我肯定我的上面是穷人,但这是位我认为是最糟糕的。这个类打开所有的URL,搜寻链接,然后测试链接的状态并返回。我想这门课应该被分解了吧?最重要的是,我认为应该在它自己的类中隔离对链接的测试,这样以后就可以很容易地实现线程了?
基本上我是在寻求建议。如果有人能帮我把项目安排得更好一点。其次,我认为这是我最薄弱的领域,所以为了提高我需要更多地了解这一点,我甚至不知道该称之为什么(设计/布局问题?)。您是否也可以推荐一些资源来了解更多这方面的信息?
1条答案
按热度按时间pdsfdshx1#
java是一种imo语言,体现了良好的oo设计。用面向对象的思想进行设计是非常有效的。
http://java.sun.com/developer/onlinetraining/programming/basicjava2/oo.html
就你的问题而言,我认为效果不错。您在某种程度上遵循模型-视图-控制器模式:http://www.codinghorror.com/blog/2008/05/understanding-model-view-controller.html
我不能告诉你如何设计你的代码,但我会告诉你如果我遇到同样的问题我会怎么做:
我会得到一个类来表示一个超链接。在那个类中,会有一个被刮去的超链接,还有一个getter和setter。以及布尔值和ping函数。这意味着,如果我创建了一个“超链接”对象,那么我就可以对该对象调用(“ping”),因为它是该类的一部分。这意味着ping函数只是设置表示连接性的布尔值。
这样,解析器基本上得到一个页面,对于找到的每个链接,它都会基于自己的“hyperlink”类创建一个新的“hyperlink”对象。把它放在一个数组里。所以一旦解析器执行,就会得到指向超链接的指针数组。
然后,您所要做的就是对每一个调用ping函数,看看它是否存在。
我认为这个设计是最好的,因为它可以很容易地从一个超链接测试扩展到1000个超链接测试。
关于设计的东西太多了,也有无数的原则。解决问题从来没有一个绝对的方法。但是,你获得的经验越多,你对设计模式和模型的了解越多,你就越了解它:)