我正在学习面向对象的原则,并且为了练习,我正在使用Java开发一个应用程序。
该应用程序旨在解析扑克站点每次玩牌后发布的手牌历史文本文件,并从文件中提取相同类型的数据,无论手牌历史是来自哪个站点。
手牌历史文件的格式可能因扑克站点而异。一些站点以非常易读的方式呈现每个手牌,例如:
NL $0.25/$0.50 Texas Hold'em - Tuesday, June 22, 19:55:24 GMT 2010
我的问题是:当从文本中解析上述行时,我是否应该有单独的类来解析每个元素?例如,我应该有一个StakesParser类和一个parseStakes()方法,然后再有一个CurrencyParser类和一个parseCurrency()方法等等。还是应该有一个单一的类,可以解析该行并从中获取所有不同的信息?
为了进行解析过程,我想要的结果是一个GameState类,它将保存一手扑克牌的所有信息。因此,无论手历史文件来自哪个网站,我都可以通过HHParser类解析出一个GameState类的相关信息。
为此,我认为最好有一个接口,必须实现该接口,以确保每个扑克网站的HHParser最终都会生成一个GameState类。因此,该接口将具有parseStakes()、parseCurrency()等方法。这种方法正确吗?
让我更困惑的是,在不同的网站上,信息的顺序是不同的,因此我可能需要一个控制器类,确保根据文本文件来自哪个网站,调用每个方法的顺序是正确的。
很抱歉啰嗦了这么多,但我会非常感谢任何关于最佳做法的指导。