作为解析器库的一部分,我有以下对象层次结构:
解析入口 | | / \ / \ / \ NumericParseEntry StringParseEntry
ETC。,
这些对象基本上保存数据。然后,我有一组操作,例如评估(评估一个值是否通过解析条目标准)、generateSQL(根据解析条目标准生成 SQL 条件)。
由于单一职责原则,我不想将这些函数添加到特定的解析条目类中,并且希望维护单独的层次结构,为解析条目层次结构实现这些函数。这允许我为多个解析条目重用某个实现。
我想知道如何将操作与对象结合起来,以便在浏览执行某些操作的解析条目的解析表时,我应该能够获得适当的操作对象。
我能想到的一种粗略的方法是有一个工厂类,它维护解析条目类型与其对应的求值器/SQL 生成器之间的映射。另一种方法是将求值器/sql 生成器作为解析条目的数据成员嵌入,并在 getter 中返回它们。
对此即兴创作的任何帮助将不胜感激。