我有一个与复合结构设计有关的问题。我有一个描述通用数学表达式的 Expression 抽象类。这个想法是一个表达式可以是一个原子表达式(如“x”或“3”)或某种原子表达式的聚合(如求和、乘积、求幂等)。事实证明,复合模式很好地描述了这一点,例如,Summatory 类继承自 OperationTerm,而后者又继承自 Expression,并包含 Expression 术语的“augends”列表。
一切都很好,直到我尝试在某些属性的基础上专门化其中一些表达式;例如,如果表达式由单项式项的求和组成,则应将其“标记”为多项式,以便以对客户端代码透明的方式优化某些类型的运算(如积分或导数) (应该只处理 Expression 对象)。
有人知道我如何设计这种结构(可能以可扩展的方式)吗?