我正在学习面向对象的原理,为了实践,我正在用Java开发应用程序.
该应用程序将在玩完每一手扑克牌之后解析扑克站点发出的扑克手历史文本文件,并从文件中提取相同类型的数据,而不管该扑克手历史来自哪个站点.
手历史记录文件的格式可能会非常不同,具体取决于扑克网站.有些网站的每只手都具有人类可读的风格,例如:
NL $0.25/$0.50 Texas Hold'em - Tuesday, June 22, 19:55:24 GMT 2010
其他具有XML样式.
我的问题是:从文本中解析以上行时,是否应该有单独的类来解析每个元素?例如,我应该有一个带有parseStakes()方法的StakesParser类,然后是一个具有parseCurrency()方法的CurrencyParser类,等等.还是我应该有一个可以解析该行并从中获取所有不同信息位的类?
为我要解析的每件事设置一个单独的类似乎更OO,但效率更低.有什么建议吗?
作为解析过程的结果,我想要的是一个GameState类,该类可以保存一手扑克的所有信息.因此,无论手部历史记录文件来自哪个站点,我都可以使用HHParser类为GameState类型的对象创建所有相关信息.
为此,我认为拥有一个必须实现的接口是一个好主意,该接口将确保每个扑克站点的HHParser最终产生GameState类.因此,接口将具有诸如parseStakes(),parseCurrency()等方法.这是正确的方法吗?
让我更困惑的是,在不同的站点上,信息的顺序是不同的,因此我可能需要一个控制器类,以确保根据文本文件来自哪个站点,以正确的顺序调用每种方法.
对不起华夫饼,但是对于任何可能最好的方法,我将不胜感激.
提前谢谢了. ?