10.3 懒惰的老板请客

    这里给出一个老板请客吃饭的场景,老板发现大家最近干活很努力,准备犒劳一下大家,老板想了一下整个过程,大致需要做如下事情。

    预定桌子:subscribe()

    点  菜:waitForAnOrder()

    做  菜:cookDish()

    老板讲话:address()

    上  菜:serveDishes()

    结  账:check()

    “原来请人吃饭也要这么麻烦”,老板嘀咕着,抬起头正好看见了助理,他就索性把请客的事情全部交给助理去办了。

    这一个是虚拟的场景,或许你已经是老板,让助理处理这些事情也早已习以为常了,那么,这里提到的助理正是充当了Façade的角色。有了助理,老板请客吃饭就简单了许多。

    助理准备晚餐:prepareDinner()

    老板发表讲话:address()

    助理结束晚餐:endDinner()

    助理的模拟代码片段大致如下所示。

    figure_0160_0165

    在prepareDinner()方法中,助理预定位置,点菜并吩咐厨师做饭;在endDinner()方法中,助理负责让服务员上菜,最后结账。这样,模拟老板的代码如下所示。

    figure_0160_0166

    figure_0161_0167

    老板除了自己发言之外,其他事情都交给助理去处理了,我们的测试程序如下所示。

    figure_0161_0168

    测试的执行结果如下所示。

    figure_0162_0169