如何在OOP

时间:2016-01-28 14:27:23

标签: java oop design-patterns web

让我们说一个网页:shop.com
基本结构:
shop.com/search
shop.com/user

shop.com/user/cart/需要身份验证会话。

我正在使用Jsoup为此网页构建解析器,以从目标页面中提取一段文本。我想把它编程为一个"网页作为API" 所以我的问题是,我该如何设计我的程序呢?

现在我有这样的事情:
Shop shop = new Shop(username, login) // instantiating the user session
Document shoppingCart = shop.getShoppingCart(); // returns org.jsoup.nodes.Document

这里的问题是如果我需要来自许多不同页面的更多数据,例如:x shop.findBestDeals() // would not need login session
shop.getUsedSearchTerms() // would need login session
所有解析权重都在Shop类上。如果页面不需要,请无缘无故地登录用户。
所以我想到使用这样的静态方法,每个页面都是一个类:
Document cart = Cart.getShoppingCart(usersession)
Document deals = Shop.findBestDeals()
Document dealsForUser = Shop.findBestDeals(usersession) // if web page would display special items for logged in users

基本上,将网页作为类,它们都有静态的数据检索方法。正如我现在想的那样,每个"页面类"会需要很多(相同的)进口(和其他类一样),它会没问题,还是有一种设计模式可以防止这种情况发生?
这是我作为一个API"#34;网页作为第一年学生的最好成绩。问题。
英语不是我的第一语言,所以请随时提出进一步的问题! :)

PS:不是作业,我个人的项目!

编辑:另一个例子:Youtube.com(任何视频托管网站都会:) :) 我希望能够以编程方式获取我的私人视频列表 因此,我将建立与youtube.com的连接,POST登录请求,并保存会话

然后,使用该登录会话将请求发送到user_videos.php文件并获取html页面。
然后我解析了页面,所以我得到了视频标题列表

这将是一个任务",获得我的视频的标题。我想要完成很多任务。另一个是获取我朋友的名单,例如。

最终目标是在另一个程序中使用该程序作为访问网页进行数据提取的编程方式,而无需编写抓取代码和连接自身。想想网页的API("限量版")。

1 个答案:

答案 0 :(得分:0)

我曾经做过类似的事情,使用GUI屏幕而不是网页。

Java可能不是最好的语言,也许Python更好,尤其是编写"任务"本身而不是页面。

我有一个代表特定屏幕的课程。该类将有getter访问已解析的内容," setters"将内容发送到屏幕(通过发送击键和鼠标点击实现)和操作(更多点击)。某些操作返回其他屏幕,作为工厂方法。

在添加另一个字段或动作或屏幕需要编码的意义上,整个事情是相当静态的。