在做项目的过程中,常常会遇到这种情况:需要做一些类似的操作,但是又有一些差别,以数据库查询为例,经常需要查询符合某种条件的所有用户,比如性别为男的用户,或者年龄大于45的用户等。通常遇到这种情况,是根据查询条件写多个查询,然后分多个 API 进行实现。大概是下面这个样子:
如果查询条件更多的话,是不是写的接口更多了呢?
仔细看一下的话,就会发现,实际上每次查询都是根据一定条件来进行查询,之后的数据组合方式是一样的,那进行优化的方向就是如何传递查询条件。一个是直接写查询的 sql 语句,这样写就失去了效率。系统的 API 在这方面已经给出了范例。
通过 block 将排序的条件直接返回给数组。
那我们就可以简单这么写:
这样,上面两个 API 就可以使用这个 API 实现。
这样查询的条件就可以和 API 独立,并且不影响查询的灵活性。
实际上这样的 API 设计在流行的第三方框架中很常见,比如自动布局框架Masonry。