我已经准备好了这次OOP(java)练习,我实际上只是处理一项看似简单的任务:
编写一个composite层次结构,表示由sums,products,constant和(唯一)变量组成的算术表达式。使复合可访问并写一个visitor,给定一个表达式,返回它的衍生物 最后,编写一个函数MyApp,它生成一个表示函数
2(x^2)-3
的对象(我认为它隐含意味着y=2(x^2)-3
,Ed。) 并计算他的衍生物。
可以从问题中省略最后一部分(MyApp创建)。
所以我的基本知识告诉我创建一个可以由多个类实现的接口“Expression”:Sum,Product,Constant,Variable。
然后我需要创建一个接口“Visitor”,它将由多个访问者类实现:SumVisitor,ProductVisitor,ConstantVisitor,VariableVisitor,它们计算每个表达式的派生并将其作为Expression返回。
如果我想这样做,我还必须通过创建 accept(Visitor visitor)
方法使复合可访问,但这是我被卡住的地方,因为我无法理解它好吧(在哪里放置方法?必须使用它?等等)。
我已经用Google搜索过了,但是我不能将我发现的复合访问者应用于此练习。
这是不作业,只是为了更好地理解模式而想要解决的练习,如果我想通过考试,我真的需要这样做。
希望你能给我一些提示(或者你的个人解决方案,我不介意)。
谢谢。