关于回调
几种场景
-
A函数在执行过程中调用了B函数,而B函数再流程中需要外部A的配合(扩展性),调用B时传入回调接口实现(匿名或者new)。
-
A函数在执行过程中调用了B函数,而B函数在执行完成后,需要对结果进行处理,一种是返回A后由A处理,第二种是传入处理函数,直接进行调用(偏向于较为简单的处理,且与A的主功能相关性较差,比如打印日志。)。
-
调用异步函数,异步状态下,可能无法让B函数返回后处理,则需直接把结果处理方法传入,进行处理。
应用1(阻塞)
A ----> B ----- >C(过程处理)-----> B----------->A (过程或者结果,可通过参数传入)
A ----> B ------>C -----------> A
这个C:
- C 与B的没有从属关系,弱关系。
- 可能是个扩展点,有多种实现,结果扩展,过程扩展。
应用二(异步回调)
- A --- > B(异步)
而A需要对B的结果作出处理,则通过回调把处理函数C传入异步函数B - 涉及到异步一般会涉及到回调(过程回调或是结果回调)。
模式
- 一旦发现 A 调用B,而B在过程中需要调用外部功能C(在A中可初始化以及实现),则C就可以通过回调来达成引入。
- 异步调用要想到回调。
网友评论