很多工程师在面试里都见过类似题型:要求你设计一套链式调用 API,看起来像在写一句顺口溜,但实际考的是两件事——调用语法的可读性与执行时序的可控性。把它放到 ABAP 世界里,这题尤其有意思:一方面我们很熟悉面向对象与内表操作;另一方面在 SAP Gateway、RAP 乃至 SAP BTP 的事件化架构里,延迟执行 + 统一调度其实是非常常见的思想。
下面用一个ZCL_PERSON的例子把整套思路讲透:支持eat、sleep、sleep_first的链式调用,并且sleep_first永远拥有最高优先级。
题目要的到底是什么
链式调用的体验
期望写出来的代码大概是这种感觉:
jerry->eat( ... )->eat( ... )->done( ).jerry->eat( ... )->sleep( 1 )->eat( ... )->done( ).jerry->eat( ... )->sleep_first( 1 )->eat( ... )->done( ).
链式调用的关键点,是每个动作方法都要返回当前对象实例