[JAVA中模板模式、策略模式解析.docVIP

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[JAVA中模板模式、策略模式解析

JAVA中模板模式、策略模式解析 分类: IT技术类 2010-02-05 16:37 ???最近对JAVA中的模板设计模式和策略设计模式进行了学习,个人总结如下: 模板设计模式:?个人认为模板模式是通过继承方式实现,也就是将不变的部分写在其类里面,将变化的部份通过抽象方法在基类中写出,通过继承由子类自己去实现变化的部分。模板模式常用在将一个大程序分为N块,每一块建立一个抽象类由子类去实现,相当于一个架构师写好一个基本骨架,由各个程序员去实现自己相应的部分。适用情况   1) 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。   2) 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。其实这可以说是一种好的编码习惯了。   3) 控制子类扩展。模板方法只在特定点调用操作,这样就只允许在这些点进行扩展。比如上面runBare()方法就只在runTest前面适用setUp方法。如果你不愿子类来修改你的模板方法定义的框架,你可以采用两种方式来做:一是在API中不体现出你的模板方法;二、将你的模板方法置为final就可以了   可以看出,使用模板方法模式可以将代码的公共行为提取出来,达到复用的目的。而且,在模板方法模式中,是由父类的模板方法来控制子类中的具体实现。这样你在实现子类的时候,根本不需要对业务流程有太多的了解。???例子如下: ??? package cn.tcl.test; public abstract class MakeBox { ?public void doThis(){ ??System.out.println(do this ......); ?} ? ?public void doThat(){ ??System.out.println(do that ......); ?} ? ?abstract void addColor(); ? ?public void generateBox(){ ??doThis(); ??addColor(); ??doThat(); ?} } package cn.tcl.test; public class MakeRiceBox extends MakeBox { ?@Override ?void addColor() { ??System.out.println(add red color); ?} } package cn.tcl.test; public class TemplateTest { ?/** ? * @param args ? */ ?public static void main(String[] args) { ??MakeBox makeBox = new MakeRiceBox(); ??makeBox.generateBox(); ?} } ? 从上面例子可以看出,MakeBox类中将addColor定义为抽象方法由子类去实现,每个继承了MakeBox类的子类都必须实现该抽象方法,这就象写好一个模板似的,程序员只修改继承的抽象方法即可。 2、策略模式:个人认为所谓策略模式就是在一个方法的参数中引入另外一个类型的接口,而这个参数接口的具体实现由该方法调用时传入接口的实现类去实现不同的策略。最常用的一个策略模式应该是Servlet了,我们每个客户端程序员都在Servlet的service方法实现自己的策略,然后由框架去调用。其实常用的框架中大量采用的策略模式:spring、struts、servlet等等。 例子如下: package cn.tcl.test; public class StrategyTest { ? ?/** ? * 此处该方法并不知道会打印出什么结果 ? * 具体的结果得根据传入参数的策略而定 ? * @param s ? */ ?public static void say(Student s){ ??s.say(); ?} ?/** ? * @param args ? */ ?public static void main(String[] args) { ??Student s1 = new SeniorStudent(); ??s1.say(); ??Student s2 = new PirmaryStudent(); ??s2.say(); ?} } package cn.tcl.test; public interface Student { ?public void say(); } package cn.tcl.test; public class PirmaryStudent implements Student { ?@Override ?public void s

文档评论(0)

lisuf331 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档