对于Lab3中要求immutable类型的分析与思考

在Lab3中的ADT设计中,有一些面向复用的类中要求我们必须设计immutable的类:对于Lab3中要求immutable类型的分析与思考对于Lab3中要求immutable类型的分析与思考
受限于这些类必须是immutable的要求,我们在实现实验的过程中,会遇到许多困扰:

  • 未看清immutable的要求导致需删除代码重写。
  • 这些类中只能保存其基础的,不变的属性。
  • 但轨道系统的要求中,需要轨道上存在物体、物体之间存在联系,并且这些都是可改变的,因此类间可变的联系不能存放于这些类中,需要额外写其它的类来实现。

上述的这些原因,使得我们在进行实验的过程中,似乎是代码量更大,实现更复杂,难以维护和debug了。
那么,竟然会带来这么多的坏处,为什么实验中还要求我们把这些类设置成immutable的呢?

黑格尔有言:“存在即合理。”在深入地完成实验的过程中,我也渐渐地了解到了TA、老师如此要求的良苦用心:

  • 这些immutable的类是基础类,如此设置使得这些组成轨道系统ADT的基础部分更便于维护。
  • 在添加、删除等修改操作中,更是方便了相等匹配操作。
  • 将这些基础类之间的关系外移给其它类来实现,更符合OO设计原则中的 Single Responsibility Principle
    (SRP)
    对于Lab3中要求immutable类型的分析与思考对于Lab3中要求immutable类型的分析与思考综上,部分基础类要求为immutable是合理的!