JAVA中模板模式、策略模式解析

JAVA中模板模式、策略模式解析

ID:40299776

大小:33.00 KB

页数:5页

时间:2019-07-30

JAVA中模板模式、策略模式解析_第1页
JAVA中模板模式、策略模式解析_第2页
JAVA中模板模式、策略模式解析_第3页
JAVA中模板模式、策略模式解析_第4页
JAVA中模板模式、策略模式解析_第5页
资源描述:

《JAVA中模板模式、策略模式解析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、JAVA中模板模式、策略模式解析分类:IT技术类2010-02-0516:37   最近对JAVA中的模板设计模式和策略设计模式进行了学习,个人总结如下:1、模板设计模式: 个人认为模板模式是通过继承方式实现,也就是将不变的部分写在其类里面,将变化的部份通过抽象方法在基类中写出,通过继承由子类自己去实现变化的部分。模板模式常用在将一个大程序分为N块,每一块建立一个抽象类由子类去实现,相当于一个架构师写好一个基本骨架,由各个程序员去实现自己相应的部分。2、适用情况  1)一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。  

2、2)各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。其实这可以说是一种好的编码习惯了。  3)控制子类扩展。模板方法只在特定点调用操作,这样就只允许在这些点进行扩展。比如上面runBare()方法就只在runTest前面适用setUp方法。如果你不愿子类来修改你的模板方法定义的框架,你可以采用两种方式来做:一是在API中不体现出你的模板方法;二、将你的模板方法置为final就可以了  可以看出,使用模板方法模式可以将代码的公共行为提取出来,达到复用的目的。而且,在模板方法模式中,是由父类的模板方法来控制子类中的具体

3、实现。这样你在实现子类的时候,根本不需要对业务流程有太多的了解。   例子如下:   packagecn.tcl.test;publicabstractclassMakeBox{ publicvoiddoThis(){  System.out.println("dothis......"); }  publicvoiddoThat(){  System.out.println("dothat......"); }  abstractvoidaddColor();  publicvoidgenerateBox(){  doThis();

4、  addColor();  doThat(); }}packagecn.tcl.test;publicclassMakeRiceBoxextendsMakeBox{ @Override voidaddColor(){  System.out.println("addredcolor"); }}packagecn.tcl.test;publicclassTemplateTest{ /** *@paramargs */ publicstaticvoidmain(String[]args){  MakeBoxmakeBox=newMake

5、RiceBox();  makeBox.generateBox(); }} 从上面例子可以看出,MakeBox类中将addColor定义为抽象方法由子类去实现,每个继承了MakeBox类的子类都必须实现该抽象方法,这就象写好一个模板似的,程序员只修改继承的抽象方法即可。2、策略模式:个人认为所谓策略模式就是在一个方法的参数中引入另外一个类型的接口,而这个参数接口的具体实现由该方法调用时传入接口的实现类去实现不同的策略。最常用的一个策略模式应该是Servlet了,我们每个客户端程序员都在Servlet的service方法实现自己的策略,

6、然后由框架去调用。其实常用的框架中大量采用的策略模式:spring、struts、servlet等等。例子如下:packagecn.tcl.test;publicclassStrategyTest{  /** *此处该方法并不知道会打印出什么结果 *具体的结果得根据传入参数的策略而定 *@params */ publicstaticvoidsay(Students){  s.say(); } /** *@paramargs */ publicstaticvoidmain(String[]args){  Students1=newSen

7、iorStudent();  s1.say();  Students2=newPirmaryStudent();  s2.say(); }}packagecn.tcl.test;publicinterfaceStudent{ publicvoidsay();}packagecn.tcl.test;publicclassPirmaryStudentimplementsStudent{ @Override publicvoidsay(){  System.out.println("IamaPrimaryStudent"); }}packa

8、gecn.tcl.test;publicclassSeniorStudentimplementsStudent{ @Override publicvoidsay(){  System.out.println("IamaS

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。