编程基础设计原则开闭_第1页
编程基础设计原则开闭_第2页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Softwareentities(classes,modules,functions,etc.)shouldbeopen for extenlosed for modification.open for exten模型达到目的。而Close for modification(对修改关闭)的意思是说不允许对该实体做任 HYPERLINK http:/f/ varAnswerType Choice: Input: functionquestion(label,answerType, return label: label, : var view = (function () renderfunct

2、ion , question) varquestionWrapperame = varquestionLabel= var label =ame = question-label;varanswer= ame = question-input;if (question.answerType = AnswerType.Choice) inputlen = (vari=0;i var option = option.textvarquestionLabel= var label =ame = question-label;varanswer= ame = question-input;if (qu

3、estion.answerType = AnswerType.Choice) inputlen = (vari=0;i var option = option.text= len; i+) option.value=question.choi else (question.answerType=input input.type = return (vari(, questions) 0;iquestions.length;, var questions question(Have you used tobacco last30 days?, AnswerType.Choice, Yes, qu

4、estion(Whatmedicationsareyoucurrentlyquestion(Whatmedicationsareyoucurrentlyusing?, var questionRegion =view.render(questionRegion, questions);上面的代码,viewrenderquestion 列表,展示的时候根据 choi 的选项(如果是选择类型的话)Choice 那就根据选项生产一个下拉菜单,如果类型是 Input,那就简单地展示 input 输入框。 uestion 里的条件语句,这明显 了开闭原则。ender 能力,而不需要修改view 对象先来

5、创建一个通用的questionCreatorfunctionquestionCreator(spec, t = my = my | ; my.label=spec.label;my.renderInput=function throw not t.render = function ) var questionWrapper =var questionLabel =ame = question-label;var label =var answer = /因为不/因为不 return questionWrapper;是rnr的rnrnpt方法以其他ncion可以盖,以用不同类,继续看一每个问类

6、型的现代function choiceQuestionCreator(spec) var my = t = questionCreator(spec, my.renderInput = function () var input =var len = spec.choifor (var i = 0; i len; i+) var option =option.text = spec.choioption.value = spec.choireturn function var my = t = questionCreator(spec, my.renderInput = function ()

7、 varinputinput.type = 功能delegat给针对每个问题类型的扩展代码renderInput上2. spec属性替换掉了前面question return choiceQuestionCreatorinputQuestionCreatorinput输入renderInput 实现,通过 调用 的 questionCreator(spec, my)然后返回 t 对var view = render: , questions) for (var i = 0; i questions.length; var questions label: Have you used tobacco products withhelast30days?, : Yes, Nolabel:What medications are you currently var questionRegion view.render(questionRegion, 重构以后的版本的 重构以后的版本的 view 对象可以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论