一个ASAP的系统

假设有这样的系统,在某个图书馆有一个柜台可以推荐相关的书,例如,你过去想问一下,有没有java方面更相关的书推荐一下呢?他就会展示一个抽屉(Drawer),每个格子(Grid)可以放20本书,他先打开第一个格子,把这20本书给你过目,你看完之后问,有没有其他的?他再打开第二个格子,把里面的书给你过目,以此类推。

假设来说,这个图书馆内部的机制比较复杂,这个推荐柜台,我们称之为RC(Rating Counter), 他是没有办法直接查询图书馆数据的,里面还有两个柜台,柜台LC可以查询图书馆数据,你把书名告诉他,他同样会展示一个Drawer,里面的Grid会放和这个书名相关的书,还有柜台DC,你告诉他一些关键字,他展示的Drawer里面放着他认为的好书,但是这些书,LC不一定有,或者DC的书在LC那里有好几个版本。LC和DC的Drawer是需要一格格填充的,也就是职员会回到仓库里,一次搬来一格的书。而且现在人手紧张,三个柜台都只有一个人在忙活。注意的是,你可以叫他直接搬来第二格的书,也就是说要第几个格子的书不需要前面的格子先搬完,不过他可能会告诉你,这个格子里面给的书不到20本,或者这个格子里面根本没有书(你要第三个格子的书,但是书总共只有两个格子的数量)。

以前的业务逻辑是这样的,你来到RC,然后告诉他一个关键字,RC的职员就会到DC那里,DC的职员忙里忙外搬了好几次之后,和RC的职员说,这就是全部了,交给RC的职员一个Drawer,于是RC的职员自己准备好一个空的Drawer到LC,照着DC的Drawer里面的书,先拿第一本书问LC,LC忙里忙外搬了好几次,给RC一个该书的Drawer,RC一本本检查里面的书是不是和DC给的相关,如果是才放进自己的Drawer里,然后他就问第二本,如此反复,等到DC给的Drawer里面的书全部查询完毕,RC的职员就拿着自己准备的Drawer回来,说一声"久等了,不好意思"。你现在可以打开一格格看了。

原文地址:https://www.cnblogs.com/zhengwenwei/p/2677787.html