我的代码接收到X
类的实例,该实例表示某种数据。我需要从这些对象中“提取”一些信息,并且需要在代码中的几个不同类中进行此操作。
实现此目标的第一个想法是创建一个具有公共方法extractInfoFromX
的“数据提取器”类,该方法将类X
的对象作为参数并返回相应的信息。这将是一个静态方法,因为它不依赖于任何状态。并且此类永远不会被实例化。但是我知道这与OOP的基本思想背道而驰。
我不想使用仅与我非常特定的子任务相关的函数来“污染”普通类X
。我也无法更改创建X
实例的方式。解决该问题的最佳OOP做法是什么?
编辑: 要求的其他背景信息: X类的对象表示C程序(以实现访问者模式的控制流自动机的形式)。在我的代码中,我只需要查找在这些程序中声明的函数的特定子集。唯一的方法是通过自动机节点(通过访问者)迭代并收集相关的节点。我需要在不同的地方按不同的条件进行过滤,但有些地方也共享相同的条件。定义其中一个访问者需要大约35行代码。