高阶函数&策略模式的运用

高阶函数+策略模式 函数体复用案例

场景

现实开发中,常常需要把原先的一个函数要拆成多个,但不同点只少数几处。

目标

避免复制出的多份样板式代码;拆出的函数不同点可以尽可能直观书写。

以下是我的实现

image.png

细节说明:

拆分出的函数差异点:1、使用不同的keyFormat字符串;2、调用的rpc不同

将原函数,下沉成一个内部函数,并添加一个入参XXXStrategy。这个策略struct包含的字段都是函数类型:入参为原先书写的内容,返回为可能变更的内容(变不变,由拆分出的对外函数实现)

变更函数时,需要将函数的参数+返回 保持相同。不同时需要转换适配,才能让主函数体,最大程度的保持“原样”

高阶函数 缓存查询结果案例

场景

在原先的查询位置,添加缓存逻辑

目标

缓存处理的逻辑,尽可能少的入侵业务代码

我的实现

image.png
image.png

细节说明:

缓存处理函数为二阶函数,传入原先要执行的函数,返回一个补充了缓存逻辑的函数。

总结

案例一,围绕着将【变化】(拆出函数的差异点)【不变】(可复用的主体执行逻辑),分离书写、结合执行。更重要的是,将原有代码的字面内容,极大的保留下来,这样在多人开发时,merge代码时意义重大。

案例二,【变化】不再是逻辑的“替换”,而是进行“补充”。缓存处理作为控制逻辑,书写时保持不带有业务逻辑。查询操作作为业务逻辑,需要方便的将控制逻辑添加进来。(谈设计时常说的控制反转)

你可能感兴趣的:(高阶函数&策略模式的运用)