冒号和他的学生们(连载12)——情景范式 - 编程入门网
——又臭又长又难维护。”
冒号和他的学生们(连载12)——情景范式(5)时间:2011-07-01 BlogJava 郑晖引号提议:“可以把这些信息预先存入数据库,届时用SQL查询。” “想法很好,只是有一点难度。”冒号提醒道,“这些信息并非简单的对应关系,包含一些逻辑推理,甚至需要一些模糊判断。” 句号一拍大腿:“前面不是提到领域特定语言DSL吗?将所有规则用自定义的DSL编写,再利用元编程转换成C、Java之类的通用语言,不是很好吗?” “棒极了!”冒号不吝赞词,“不过还有一种思路。我们可以搜集餐馆的菜式、顾客口味、忌讳以及各种菜与口味、忌讳之间的关系等等一系列事实和规则,用规则语言(Rule Language)如RuleML、SWRL、Jess等来描述,通过规则引擎(Rule Engine)来导出符合顾客需求的菜肴。这种方式将业务规则与应用程序分离、将知识与逻辑实现分离,是SoC原理的一种应用,同时也是一种逻辑式编程。” 问号关心地问:“这些规则引擎与Java程序兼容吗?” 冒号回答:“不少规则引擎用Java实现或专为Java平台设计,如Jess、Drools、JLisa等,另外Sun还发布了javax.rules API (JSR 94)以统一对各类引擎的访问接口。” 讲到此处,每个人都意识到,只剩下最后一个范式了。 冒号提出新问题:“假如餐馆经理接到顾客投诉,反映服务人员态度不好,卫生状况也不理想,应该怎么办?” 问号抢先说:“首先我的接待员在receive时要笑容可掬地对顾客说:‘欢迎光临!’,在send时要对顾客鞠躬:‘请慢走,欢迎下次再来’” 逗号接着说:“我的服务员在上完菜后应对客人说:‘请慢用’,句号的收银员也应加些礼貌用语,让人家高高兴兴地掏钱。” 句号补充道:“服务员在serve前、厨师在cook前应洗手,厨工在washDishes后应对餐具消毒。” 冒号紧接着问:“如果餐馆对礼貌规范或卫生标准做修改,必然要牵扯不同类中的不同的方法,维护起来很不方便,怎样才能有效地解决这个问题呢?” 答案已经昭然若揭了。 冒号干脆自问自答:“不错,正是用切面式编程。只要创立两个Aspect:Etiquette和Sanitation,分别负责礼貌规范和卫生标准方面的事务。一旦某一方面的要求发生变化,比如餐馆来了外宾,或者碰上非典或禽流感,只需在相应的Aspect模块中作调整:将礼貌用语换成英语或者提高卫生标准等等。如果采用runtime AOP,甚至还可在运行期选择激活或禁用这些Aspect。” 下面开始有些骚动,大伙早已脑中满满而腹中空空,有些头重脚轻了。 冒号见状,遂发出激动人心的号召:“今天的课到此结束,让我们从虚拟的餐馆中走出,到真实的餐馆中去吧。” 众人齐声欢呼。 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |