作为一个解析器库的一部分,我的对象层次结构如下:耦合对象层次和操作
ParseEntry | | /\ / \ / \ NumericParseEntry StringParseEntry
等,
这些对象基本保存数据。然后,我有一组操作,比如评估(评估值是否通过解析条目标准),generateSQL(根据解析条目生成SQL条件)。
由于单一职责原则,我不想将这些函数添加到特定的分析条目类,并且想要维护为分析条目层次结构实现这些功能的单独层次结构。这允许我为一个以上的解析条目重用某个实现。
我想知道如何将操作与对象耦合,以便在浏览解析表的解析表执行某些操作时,我应该能够获得相应的操作对象。
我能想到的一个原始方法是拥有一个工厂类,它在解析条目类型及其相应的评估器/ SQLgenerator之间维护映射。另一种方法是将评估程序/ sql生成器嵌入为解析条目的数据成员,并将其返回到getter中。
对此即兴创作任何帮助将不胜感激。
感谢您的意见。我同意这样的观点:这些操作本质上应该在特定的语法分析类中实现。我喜欢你的想法,将评估代码移到单独的层次结构中,并通过合成将它们包含在解析条目中。 – Vikdor 2012-07-16 06:28:34