背景:
一棵通用树,从节点到分支节点(树高度不定、树的度不定、每个节点的度不定、结点层次不定)
- 每个节点都有自己的状态,每个节点都有不一样的功能及相应参数;
- 任意一个节点发生状态改变,都会影响其它节点(根据节点的功能判断是否影响到父节点和子节点,每一个节点都会受影响);
- 父类节点会因为时间参数不同,状态改变也会有先后;其余子节点会因为父节点改变直接受影响;
问题:
我想通过面向对象去编程,实现发生异常后,记录被影响到的其它节点的及状态?
我已实现过部分:
定义节点为父类:Terminal(节点类)
其子类为:TerminalState(状态类)、TerminalState(功能类)、TerminalDispose(配置类)
过程:
我通过当前节点去找父节点是否影响,再通过相应节点去找父亲节点,至到最后一个被影响的父亲节点,再通过父亲节点去找子节点,并记录这些节点
我现在想对这个实现过程通过面向对象封装成高质量的代码,还需要做哪些相应的封装?
我是否能够直接通过根节点去找子节点被影响的,不想通过节点找父节点再找子节点?
参考GPT和自己的思路:
首先,你已经实现了一部分的代码,是很不错的。接下来,你可以考虑以下几个方面的封装:
- 影响节点的记录应该作为一个单独的类来实现,这个类可以包含被影响的节点、节点的状态和时间等信息;
- 节点的状态和功能可以作为属性来封装起来,并且可以针对不同的节点进行不同的定义;
- 在判断节点是否受到影响时,可以用递归的方式向上遍历节点的父节点,向下遍历节点的子节点;
- 你可以考虑通过根节点遍历子节点的方式来寻找受影响的节点,但是在这种方式下,你需要考虑受影响节点的顺序问题。
最后,我建议你不要着急追求封装和高质量的代码,应该先把功能实现出来,再不断地优化和重构。