冒号课堂§4.4:情景范式 - 编程入门网
,事件驱动式!”句号迅即反应过来,“客人是事件源,服务员是事件处理器,客人不定期地招手呼唤是在发表事件以通知服务员。客人与服务员是多对多的松耦合关系。”
冒号点点头,又指着引号:“刚才有人不满你的大厨职责过于简单,现在你来实现一下,也好显显技术含量。” 引号在台上摸了半天头,编出一段代码——
“堂堂大厨原来是靠查食谱做菜的。”逗号揶揄道。 引号为难地说:“这不是在编程嘛,好端端的人脑,不得不去模拟电脑,完全搞倒了。” “要设计会烹调的机器人,兴许还真得这样呢。”冒号笑道,“不过由于各种菜式组合繁多,如果每种菜都配菜谱未免太庞杂,如何精简呢?” 句号建议:“菜式成千上万,烹调技法相对少许多,不妨以技法为主线。” “好主意!”冒号挑起大拇指,“如果把待加工的菜看作数据,技法看作算法,将数据与算法分离,以算法为中心,那是什么范式?” “泛型式!”大家异口同声。 “至此我们已涉及了过程式、对象式、并发式、函数式、事件驱动式和泛型式。”引号扳着手指算着,“还差逻辑式、元编程和切面式了。” 冒号把目光转向逗号:“写菜单并不容易,如果客人不直接点菜,你的服务员如何向他推荐?” 逗号答:“最简单的方法是报菜名,并一一询问客人。” 冒号皱眉:“这样你是简单了:一个迭代就完事,可客人也该发火了。” 逗号赶紧修正:“先询问客人的口味、忌讳等等,再向他建议一些菜式。” “这还差不多。”冒号眉头舒展开来,“考虑到客人的口味、忌讳等各有不同,餐馆的菜单也随时可能变化,如果把这些都硬编码(hardcode),再加上层层叠叠的if-else语句,代码将成为懒婆娘的裹脚——又臭又长又难维护。” 冒号课堂§4.4:情景范式(6)时间:2011-06-27 BlogJava xyz98引号提议:“可以把这些信息预先存入数据库,届时用SQL查询。” “想法很好,只是有一点难度。”冒号提醒道, “这些信息并非简单的对应关系,包含一些逻辑推理,甚至需要一些模糊判断。” 句号一拍大腿:“前面不是提到领域特定语言DSL吗?将所有规则用自定义的DSL编写,再利用元编程转换成C、Java之类的通用语言,不是很好吗?” “棒极了!”冒号不吝赞词,“不过还有一种思路。我们可以搜集餐馆的菜式、顾客口味、忌讳以及各种菜与口味、忌讳之间的关系等等一系列事实和规则,用规则语言(Rule Language)来描述,通过规则引擎(Rule Engine)来导出符合顾客需求的菜肴。这种方式将业务规则与应用程序分离、将知识表示与逻辑实现分离,是SoC原理的一种应用,同时也是一种逻辑式编程。” 问号关心地问:“这些规则引擎与Java程序兼容吗?” 冒号回答:“不少规则引擎用Java实现或专为Java平台设计,如Jess、Drools、JLisa、JRules等,另外Sun还发布了javax.rules API (JSR 94)以统一对各类引擎的访问接口。” 引号颇感意外:“既然是逻辑式编程,为什么不采用代表语言Prolog呢?” 冒号准备了一大段理由等着他:“刚才提到的规则引擎都是基于Rete算法[2]的, |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |