2020面向对象程序设计寒假作业3 设计思想

介于这次可能要加入条件语句与判断语句,原本的架构可能无法支持

如果要使用原架构,则相当于在 World 类中增加方法,以后可延拓性不强

因此我需要重新考虑一个,可延拓性更强的架构


【思路】

首先,原本的三个库的基本形式还是要保证的,同时加上一定的优化:

变量库(VariableRepository)

首先,考虑到变量类型的拓展,变量类型不在局限于整数,可能的还有:字符、布尔、实数、复数甚至 C++ 中不具有的分数。

因此,每个变量都需要开一个 vector 库;其次,除了变量名到地址的映射外,还需要建立一个变量名到变量类型的映射

更或者,直接建立变量名到变量的引用的一个映射


数字库(NumberRepository)

规范数字的输入模式以及输出模式,添加乘法、除法、指数、对数运算


值库(ValueRepository)

由于定义的变量名本身不能歧义,即不能与关键字、数字冲突,也不能与定义过的变量冲突

而赋值语句时,右值需要依次判定是否为数字与变量,最后都是取值

因此,很大程度上,变量与数字有相似处,可以使用一个新的库合并


错误抛出库(ErrorRepository)

由于错误抛出占据了 World 很大的比重,故将之单独列出来,增强区块化与可读性


世界(World)

经过重新架构, World 应只是程序的集合,以及程序对外界指令的输入。其自身具有的方法,应尽可能少,避免降低可延拓性

经重新架构,我希望 World 仅需要以下方法:

  1. 唯一输入指令的渠道
  2. 调用其它类进行对指令的分析
  3. 调用其它类进行对指令的执行
  4. 调用其它类进行对指令的错误抛出
  5. 唯一输出结果的渠道

猜你喜欢

转载自www.cnblogs.com/JustinRochester/p/12285020.html