如何实现复杂对象的简洁输出
-
需求:
- 避免一次性输出大量内容
-
方案:
- 广度优先,遍历当前层级的所有节点,若不溢出则对下一层级执行相同步骤,溢出则结束打印
- 深度优先,优先输出当前节点及其子节点,若不溢出则对兄弟节点执行相同步骤,溢出则打印后结束
- 难点:
- 需要获取 子节点block 的相关信息,比如该 block 会占用多少行
- 广度优先时,当前架构为深度优先模式,会沿着对象树一直深入下去,需要有个机制暂停它的深入。
- 广度优先时,需要有全局调度,以便实现对同一层级,但不同根节点的遍历。
- 广度优先时,需要关闭边遍历边输出功能。