【发布时间】:2013-04-24 12:51:36
【问题描述】:
我希望创建一个测试应用程序,它可以检查来自航空公司提供商的各种航班信息 我正在为类和方法的概念以及要创建的方法而苦苦挣扎。 我目前的思考过程如下: 数据是从网站下载的,由于数据量大,我只想下载一次数据。 我目前的想法是:
类
BritishAirwaysFlightData()
构造函数
BritishAirwaysFlightData // Used to download the BA Flight database and store in the object (Assumging his is only small i.e. 500kb)
方法
getStartDate(String source_airport, String dest_airport) // Takes source and destination airport and return date when flights start
getEndDate(String source_airport, String dest_airport) // Takes source and destination airport and return date when flights finish
getDestAirports(String source_airport) // Takes source airport name and returns a list of destinations
getSourceAirports(String dest_airport) // Takes source airport name and returns a list of sources
getNumofDestinations() // Returns total number of destinations
希望您能大致了解我正在尝试实施的内容,但我只是不确定这是否正确。我基本上会从 Class 创建一个对象,然后构造函数会自动下载数据并存储在某种合适的对象数组中。
将创建一个主程序以允许用户查询航班信息等。
它将有效地从主程序中查询此对象以查找有关航班、日期等的特定信息。
考虑到我不想直接访问数据并且我的带宽有限,因此需要实现某种本地缓存版本,这是否是实现此类功能的最佳方式?
我更关心类/构造函数/方法的实际构成,而不是每个方法和调用参数的实际功能。
希望这是有道理的,任何指针都将不胜感激,任何参考网站也有很多像这样的现实世界的例子,这可以改善我对问题的初步分析,
谢谢,
【问题讨论】:
-
我将创建一个“实体”类来表示每个航班,然后创建一个“服务”类来下载数据并返回您的航班实体列表。然后你可以将它们存储在本地,也许使用一些像 Hibernate 这样的 ORM 到 DB 或简单地转换为 JSON 或 XML 并将文件存储在本地。
-
有一个以数据集命名的类是错误的。 “FlightData”是一个明智的选择。 'FlightData.Airline' 是一个合理的嵌套枚举。 (“BritishAirways”自然是枚举集的成员。)“FlightData.Source”或“FlightDataSource”(将枚举作为输入)是一个合理的数据访问类。
-
你可以分开工作。有一个进程定期从网站下载数据并将其转换为您自己的本地数据存储,然后您的客户端进程连接到该本地数据存储并从中读取。然后,您的客户就不需要关心从外部系统下载。当您的 JVM 进程重新启动时,您会维护数据缓存。