快速业务通道

冒号和他的学生们(连载12)——情景范式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
Course course = cook.cook(order); // 找一个空闲的服务员 waiter = findWaiter(); // 服务员上菜 waiter.serve(customer, course); // 顾客开始享用 customer.eat(course); } // 顾客用餐完毕。。。 // 找一个空闲的收银员 Cashier cashier = findCashier(); cashier.charge(customer); cashier.issueInvoice(customer); // 找一个空闲的接待员 receptionist = findReceptionist(); receptionist.send(customer); }

冒号和他的学生们(连载12)——情景范式(4)

时间:2011-07-01 BlogJava 郑晖

句号写毕又复查一遍,拍拍手上的粉笔灰,心满意足地走下台来。

叹号提意见:“我的厨工没派上用场,应该在厨师烹调前调用KitchenHand的prepareFood方法。”

问号挑出另外的毛病:“在for循环中,厨师、服务员和顾客的行为应该在不同的线程中,厨师不可能等服务员上完一道菜或顾客吃完一道菜后才做下一道。”

“可能更复杂呢!”逗号也来凑热闹,“一位顾客点的几样菜可能分别由几位厨师同时做,每位厨师都在不同的线程中工作。”

引号更严谨:“还应有一个后台线程,让Waiter随时exchangePlate,让KitchenHand随时washDishes和clean,这样所有服务人员提供的服务都用上了。”

句号倒抽凉气:“估不到漏洞这么多,并发式真是无处不在啊。”

冒号指着引号:“刚才有人不满你的大厨职责过于简单,现在你来实现一下,也好显显技术含量。”

引号在台上摸了半天头,编出一段代码——

Class Cook
    {
        public Course cook(Order order) 
        {
            // 根据菜单查食谱
            Recipe recipe = lookupRecipe(order);
            // 找到食谱的烹调步骤
            List<Instruction> instructions = recipe.getInstructions();
            for (Instruction instruction : instructions)
            {
                follow(instruction); // 按食谱的指令操作
            }
        }
    }

“堂堂大厨原来是靠查食谱做菜的。”逗号揶揄道。

引号为难地说:“这不是在编程嘛,好端端的人脑,不得不去模拟电脑,完全搞倒了。”

“要设计会烹调的机器人,兴许还真得这样呢。”冒号笑道,“不过由于各种菜式组合繁多,如果每种菜都配菜谱未免太庞杂,如何精简呢?”

句号建议:“菜式成千上万,烹调技法相对少许多,不妨以技法为主线。”

“好主意!”冒号挑起大拇指,“如果把待加工的菜看作数据,技法看作算法,将数据与算法分离,以算法为中心,那是什么范式?”

“泛型式!”大家异口同声。

“至此我们已涉及了过程式、对象式、并发式、函数式和泛型式。”引号如数家珍,“还差逻辑式、元编程和切面式了。”

冒号把目光转向逗号:“写菜单并不容易,如果客人不直接点菜,你的服务员如何向他推荐?”

逗号答:“最简单的方法是报菜名,并一一询问客人。”

冒号皱眉:“这样你是简单了:一个迭代就搞定,可客人也该发火了。”

逗号赶紧修正:“先询问客人的口味、忌讳等等,再向他建议一些菜式。”

“这还差不多。”冒号眉头舒展开来,“考虑到客人的口味、忌讳等各有不同,餐馆的菜单也随时可能变化,如果把这些都硬编码(hardcode),代码将成为懒婆娘的裹脚

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号