# Question 7 10 pts You have been asked to refactor your design of the solution that was introduced in

Question 7 10 pts You have been asked to refactor your design of the solution that was introduced in Question 6. For reference, here is the original problem: You are writing a system to evaluate arithmetic expressions. Examples are: 5+3 (15.7-3) * 1.6 (3+8)(+(18- 9)/2.1) (Note: you may assume that all operations are binary.) One way of implementing this is using a binary tree: consider that an expression consists of a left-hand sub-expression, a right-hand sub-expression, and an operation. For example, the bottom expression may be expressed as: Left sub-expression: 3+8 Right sub-expression: 4 + (18 – 9)/2.1 Operation: multiplication We can further break the left into sub-expressions for 3 and 8, with addition as the operation. The the operations being used are: add, subtract, multiply and divide. Let&#39;s focus on the expressions. You will notice that expressions can be rather complex, but a pattern will help us tame the complexity. What pattern would work well to manage the complexity of many expressions? Please justify your pattern choice and explain how it would work. (Hint: it&#39;s not Command or Observer)