- 1、本文档共46页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
其实模板方法就是最典型的“继承”的使用,大家平时百分百都可以用到,只是不知道叫模板方法模式:)! * 其实模板方法就是最典型的“继承”的使用,大家平时百分百都可以用到,只是不知道叫模板方法模式:)! 在玩“极品飞车”这款游戏,每辆车都有显示速度的仪表盘,但有可能A车显示的是蓝色的仪表盘,B车显示的是红色的仪表盘.另: 他们都有车速度的值,但显示的方式不太一样。 * 其实模板方法就是最典型的“继承”的使用,大家平时百分百都可以用到,只是不知道叫模板方法模式:)! 在玩“极品飞车”这款游戏,每辆车都有显示速度的仪表盘,但有可能A车显示的是蓝色的仪表盘,B车显示的是红色的仪表盘.另: 他们都有车速度的值,但显示的方式不太一样。 * 其实模板方法就是最典型的“继承”的使用,大家平时百分百都可以用到,只是不知道叫模板方法模式:)! 在玩“极品飞车”这款游戏,每辆车都有显示速度的仪表盘,但有可能A车显示的是蓝色的仪表盘,B车显示的是红色的仪表盘.另: 他们都有车速度的值,但显示的方式不太一样。 * 把不变的行为搬到超类,去除子类中重复的代码来体现他的优势。 当不变的和可变的行为在方法中混合在一起时,不变的行为就会在子类中重复出现,模板方法模式就是将这些不变的行为搬移到一个超类中,避免重复代码。 * 模版方法模式需要开发抽象类和具体子类的设计师之间的协作。一个设计师负责给出一个算法的轮廓和骨架.另一些设计师则负责给出这个算法的各个逻辑步骤。 代表这些具体逻辑步骤的方法称做基本方法(primitive method);而将这些基本法方法总汇起来的方法叫做模版方法(template method),这个设计模式的名字就是从此而来。 * 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。其实这可以说是一种好的编码习惯。 控制子类扩展。模板方法只在特定点调用操作,这样就只允许在这些点进行扩展。 如果不愿子类来修改你的模板方法定义的框架,可以采用两种方式来做:一是在API中不体现模板方法;二、将模板方法置为final * (Don‘t call us, we’ll call you) * * 有一个汽车加工厂,要组装一辆汽车;它的基本组装步骤是: - 组装车头 - 组装车身 - 组装车尾 测试组装的车体 不管被组装的是吉普车,卡车,还是公交车,它们的基本组装步骤都是一样的,虽然在组装的步骤中,会有细微的差别。 用Template Method设计模式来抽象以上组装过程 通过上面的分析,我们知道,该范例满足Template Method模式的应用场景所提到的条件: - 具有统一的操作步骤或操作过程:组装的步骤一样 - 具有不同的操作细节:各步骤有细微的区别。例如,组装吉普车的车头需要吉普车的车头零件 - 存在多个具有同样操作步骤的应用场景,但某些具体的操作细节却各不相同。可能需要组装不同的汽车,如吉普车,卡车,公交车等等 下面我们用Template Method设计模式来抽象以上组装过程。- MakeCar:汽车组装类- MakeJeep:吉普车组装类源代码view plainprint? //汽车 组装抽象类?? public?abstract?class?MakeCar?{?? ????//组装车头?? ????abstract?void?makeHead();?? ????//组装车身?? ????abstract?void?makeBody();?? ????//组装车尾?? ????abstract?void?makeTail();?? ????//测试?? ????abstract?boolean?checkMake();?? ?? ????public?void?make()?{?? ????????System.out.println(Start?make?car...);?? ????????makeHead();?? ????????makeBody();?? ????????makeTail();?? ????????if?(checkMake())?{?? ????????????System.out.println(Make?OK.);?? ????????}?else?{?? ????????????System.out.println(Make?Failure.);?? ????????}?? ??}?? }?? ?? //吉普车组装类?? public?class?MakeJeep?extends?MakeCar?{?? ????//组装车头?? ????void?makeHead()?{??
您可能关注的文档
- 城市综合体案例.教案.ppt
- 城市综合体案例研究旧城改造类型城市综合教案.ppt
- 常用电源芯片使用教案.ppt
- 常用电子测量仪器教案.ppt
- 城市综合体产品模型与目标城市筛选模型(九洲远景)页教案.ppt
- 常用电子仪器教案.ppt
- 城市综合体的规划设计讲义教案.ppt
- 常用电子元器件简介(课)教案.ppt
- 常用法律知识讲座教案.ppt
- 城市综合体的开发策略与模式页教案.ppt
- 【统编版】高中语文必修上册第1单元《第1课沁园春长沙》上课(29张PPT)课件.pptx
- 【统编版】高中语文必修上册《第1课沁园春长沙》优质课(28张PPT)课件.pptx
- 【统编版】高中语文必修上册毛泽东《沁园春长沙》精品课(30张PPT)课件.pptx
- 2025年甘肃省白银市选调生考试(行政职业能力测验)综合能力题库完整.docx
- 2025年皖北卫生职业学院单招语文测试模拟题库及参考答案.docx
- 2025年福建电力职业技术学院单招语文测试题库完整版.docx
- 2025年甘肃省白银市单招语文测试模拟题库审定版.docx
- 2025年福建省三明市行政职业能力测验题库及参考答案.docx
- 环境描写作文指导:中学作文强化训练教学教案.doc
- 闭经ppt中医课件.pptx
文档评论(0)